這個題目就是用一個256大小的數組,因爲ASCII碼能表示的範圍就是256,然後出現一個字母都記住它最新的位置,記住最左邊的位置,相減就是答案了,這個看代碼應該比較容易看懂。。。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector<int> dist(256,-1);
int maxlen = 0,start = -1;
int len = s.length();
for(int i = 0;i<len;i++)
{
start = dist[s[i]]>start?dist[s[i]]:start;
dist[s[i]] = i;
maxlen = max(maxlen,i-start);
}
return maxlen;
}
};