题目描述
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc"
,所以其长度为 3。
使用方法 双指针
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char,int> hep; //记录每个字母出现的次数
int res = 0; //定义一个最大值
for(int i = 0,j= 0;i<s.size();i++)
{
hep[s[i]] ++; //插入一个数出现的次数加1
while(hep[s[i]]>1) hep[s[j++]]--; //如果某个数的出现次数大于1 J指针就一直向后移动 第二遍J指针不会从头开始 慢慢取出一些数
res=max(res,i-j+1); //求最大值 i-j求的是长度 i-j+1求的是有多少字母
}
return res;
}
};