输入一串字符串,输出不含重复字符的字串
输入样例:"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指向字串的尾部,每次向结果字串中添加字符时,判断结果字串中是否已存在。如果存在,更新最长字串长度,删去结果字串的头部字符(因为我们要找的是连续的最长字串),继续向后遍历。