问题:
代码:
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