c++ 无重复字符的最长子串 题解 2021-07-13 DAY3

问题:

 代码:

​
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
    unordered_set<char> occ;
    int n = s.size();

    int rk = -1, ans = 0;

    for (int i = 0; i < n; i++ ){
        if (i != 0 ){
               occ.erase(s[i - 1]); 
        }
        while (rk + 1 < n && !occ.count(s[rk + 1])){
            occ.insert(s[rk + 1]);
            ++rk;
        }
        ans =max(ans , rk -i + 1 );

    }
    return ans;
    }
    
};

​

STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。从根本上说,STL 是一些容器、算法和其他一些组件的集合,所有容器和算法都是总结了几十年来算法和数据结构的研究成果,汇集了许多计算机专家学者经验的基础上实现的,因此可以说,STL 基本上达到了各种存储方法和相关算法的高度优化。

1.unordered_set是c++ 11 为 STL标准库添加的一种无序set容器

unordered_set 容器具有以下几个特性:

        (1)不再以键值对的形式存储数据,而是直接存储数据的值;

        (2)容器内部春初的各个袁术的值都互不相等,而且不能被修改

        (3)不会对内部的存储的数据进行排序

2. occ是容器的名字

3. >(大于)、>=(大于等于)、<(小于)、<=(小于等于)、==(等于)和 !=(不等于)

4.erase()函数:

erase()函数用于在顺序型容器中删除容器的一个元素,有两种函数原型,c.erase(p),c.erase(b,e);第一个删除迭代器p所指向的元素,第二个删除迭代器b,e所标记的范围内的元素,c为容器对象,返回值都是一个迭代器,该迭代器指向被删除元素后面的元素。

5.count函数:

count函数的功能是:统计容器中等于value元素的个数。count(first,last,value); first是容器的首迭代器,last是容器的末迭代器,value是询问的元素。

6.insert函数:

insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。

参考:

http://c.biancheng.net/view/6557.html

http://c.biancheng.net/view/7250.html

https://blog.csdn.net/qingtianweichong/article/details/9531919

http://c.biancheng.net/view/6834.html

猜你喜欢

转载自blog.csdn.net/qwazp3526cn/article/details/118700813