题目:
给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。 给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。 给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。
解题:
class Solution { public: int lengthOfLongestSubstring(string s) { vector<int> visited(256,-1); int res = 0; int tmp = 0; for(int i = 0;i < s.size(); ++i){ if(visited[s[i]] == -1){ tmp++; visited[s[i]] = i; }else{ res = max(tmp,res); int next = i - visited[s[i]]; for(int j = i-tmp;j <= visited[s[i]]; ++j){ visited[s[j]] = -1; } tmp = next; visited[s[i]] = i; } } res = max(res,tmp); return res; } };