Longest Substring Without Repeating Characters
Longest Substring Without Repeating Characters
int lengthOfLongestSubstring(string s) {
if (s.size() == 0) return 0;
int curLen = 0;
int maxLen = 0;
// remember last occurrence of each character
vector<int> pos(256, -1);
for(int i=0;i<s.size();++i) {
int prepos = pos[s[i]];
// if not seen before or outside current range, keep counting
if (prepos == -1 || i - prepos > curLen) {
++curLen;
} else {
// otherwise update max and reset current length
maxLen = max(maxLen, curLen);
curLen = i-prepos;
}
// always record character position for lookup
pos[s[i]] = i;
}
maxLen = max(maxLen, curLen);
return maxLen;
}#DP