題目鏈接:click~
/*題意:一個字符串,求不含有重複字母的最長子串的長度*/
/**
*思路: 用v[]記錄字母出現的位置。掃描字符串時,如果該字符
* 已經出現過,且出現的位置在開始位置之前,更新開始位置。
*/
class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector<int> v(256, -1);
int start = 0;//開始位置
int maxLen = 0;
int len = s.size();
for(int i = 0; i < len; i ++) {
int k = s[i];
if(v[k] != -1 && start <= v[k]) {//字符已經出現過且在開始位置之前
start = v[k] + 1;//開始位置+1
}
v[k] = i;
maxLen = max(maxLen, i-start+1);
}
return maxLen;
}
};