双指针算法
int lengthOfLongestSubstring(string s) {
vector<int> m(128, 0);
int ans = 0;
int i = 0;
for (int j = 0; j < s.size(); j++) {
i = max(i, m[s[j]]);
m[s[j]] = j + 1;
ans = max(ans, j - i + 1);
}
return ans;
}
注意
m内存的是字符串s中字符的ASCII码,j每访问一下字符就给该字符赋上自己所在位置的index,如果出现重复字符,该字符就会比未重复字符多一,从而使i向前移动。