Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: The answer is"wke"
, with the length of 3. Note that the answer must be a substring,"pwke"
is a subsequence and not a substring.
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
### 解题思路
滑窗操作,i为右边界,left为左边界,实现效果为,i不断向右移,而左边界需要判断是否移动,判断依据为新入的元素是否存在于窗口中,若存在且比窗口左边界的指示值大则把左窗口的边界向右移动,移动依据为map中的映射。并且右移的同时不断得建立映射。而left=-1是为了指示左边界的左边一个值,所以为-1。并且存储一个res值记录大小。
### 代码
```cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left=-1;int res=0;
unordered_map<int,int> m;
for(int i=0;i<s.size();i++)
{
if(m.count(s[i])&&m[s[i]]>left)
{
left=m[s[i]];
}
else
{
res=max(i-left,res);
}
m[s[i]] = i;
}
return res;
}
};
参考资料:
https://www.cnblogs.com/grandyang/p/4480780.html
https://www.cnblogs.com/ariel-dreamland/p/8668286.html 思路以及实现过程
https://blog.youkuaiyun.com/qq_34909804/article/details/103681865 map用法