Leetcode No.3 无重复字符的最长子串
思路:
利用滑动窗口原理,先优先打表,观察其规律,我们可以通过左边扫描指针 i \ i i,以及右边的指针 j \ j j,建立一个hash表记录出现的次数,如果目前没有出现重复的字符,那么就一直移动 j \ j j,直到出现重复字符,那么就一直移动 i \ i i,移动过程中记录hash表进行更新。
算法代码:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int ans = 0;
map<char, int> flag;
for(int i = 0, j = 0; i < s.length() && j < s.length();)
{
if(flag[s[j]] > 0){
flag[s[i++]] --;
}else{
flag[s[j++]]++;
}
ans = max(ans, j - i);
}
return ans;
}
};