这道题的双指针解法觉得很妙,所以记录一下:
题目
解答(C++)
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.empty()) return 0;
vector<bool> used(250, false);
int maxLength = 0, left = 0, right = 0;
while(right!=s.size()){
while(used[s[right]]){
used[s[left]] = false;
left++;
}
used[s[right]] = true;
maxLength = max(maxLength, right-left+1);
right++;
}
return maxLength;
}
};
巧妙之处:
使用字符的ASCII码作为哈希表的映射函数,很灵性。(我一开始是用的<char, int>的unordered_map来建立哈希表)