给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
思路:注意子串是连续的,子序列是不连续的。遍历字符串,判断当前字符上次出现的位置是否大于start,若大于则子串开始的位置变为当前字符串上次出现的位置,求当前子串长度
int lengthOfLongestSubstring(string s) {
vector<int> dict(256, -1);
int maxLen = 0, start = -1;
for (int i = 0; i != s.length(); i++) {
if (dict[s[i]] > start)
start = dict[s[i]];
dict[s[i]] = i;
maxLen = max(maxLen, i - start);
}
return maxLen;
}