leetcode上的一道题,因为之前没有用过滑动窗口,所以记录一下。
题目:
代码:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int size;//sliding window's size
int start = 0, end = 0, maxres = 1;
if(s.length() == 0){
return 0;
}
int flag[256];
memset(flag, -1, sizeof(flag));
flag[(int)s[0]] = 0;//first character
for(int i = 1; i < s.length(); i++){
if(flag[(int)s[i]] == -1){//current character not exist
flag[(int)s[i]] = i;
end++;
}else{
int tmp = flag[(int)s[i]] + 1;
for(int j = start; j < tmp; j++){
flag[(int)s[j]] = -1;
}
flag[(int)s[i]] = i;
start = tmp;//move the window
end++;
}
size = (end - start) + 1;
if(maxres <= size){
maxres = size;
}
}
return maxres;
}
};