无重复字符的最长子串

输入一串字符串,输出不含重复字符的字串

输入样例:"abcabcbb"

输出:3。

输入样例:"bbbcbcb"

输出:2。

C++代码

int lengthOfLongestSubstring(string s) {

•    unordered_set<char> set;

•    int length = s.size();

•    int ans = 0;

•    int rk = -1;

•    for(int i=0;i<length;i++){

•      if(i!=0){

•        set.erase(s[i-1]);

•     }

•      while(rk+1<length&&!set.count(s[rk+1])){

•        set.insert(s[rk+1]);

•        ++rk;

•     }

•      ans = max(ans,rk+1-i);

•   }

•    return ans;

}

目标是找出最长字串,我们设置两个指针(i,rk),i指向字串的头,rk指向字串的尾部,每次向结果字串中添加字符时,判断结果字串中是否已存在。如果存在,更新最长字串长度,删去结果字串的头部字符(因为我们要找的是连续的最长字串),继续向后遍历。

上一篇:pycharm安装igraph,简单实例(2021.8.21)


下一篇:分析:xml的schema约束引入