最开始暴力破解-时间不够用。。。
最开始也想到了滑动窗口,但是觉得暴力破解就够了,也就没在意。。
后来不得不研究滑动窗口。。。
改进的话,可以把hash表优化成数组,每个字符对应数组中的一个位置。
即i['a'],其中 因为字符也是一个数字,所以可以对应。
判断条件其实直接
idx[s[j]] >= i 就行了,并不需要find貌似。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int i=0;
int j=0;
int len=0;
unordered_map<char, int> hash;
int n=s.size();
while(i<n&&j<n){
if(hash.find(s[j]) != hash.end()&& hash[s[j]]>=i){
len = max(len,j-i);
i=hash[s[j]]+1;// 第一次写成了i=j
}
hash[s[j]]=j;
j++;
}
len = max(len,j-i);//开始并没有考虑到如果从头到尾都没有重复的情况
return len;
}
};