您的位置:首页 > 其它

Leetcode Longest Substring Without Repeating Characters

2015-10-18 15:26 393 查看
创建一个窗口 (双端队列)
class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector <int> hash(256,0);
int cnt=0;
int answer=0;
int i=0,j=0,len=s.size();
while(i<len){
if(hash[s[i]]!=0){
answer=max(answer,i-j);
while(hash[s[i]]!=0&&j<i){
hash[s[j]]--;
j++;
}//end while
}//end if
hash[s[i]]++;
i++;
}//end while
answer=max(answer,i-j);
return answer;
}
};

改进版

class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector <int> hash(256,-1);
int answer=0;
int i=0,j=0,len=s.size();
if(len<=1) return len;
while(i<len){
if(hash[s[i]]>=j){
answer=max(answer,i-j);
j=hash[s[i]]+1;
}//end if
hash[s[i]]=i;
i++;
}//end while
answer=max(answer,i-j);
return answer;
}
};

在改进 待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode hash 窗口