给定一个字符串 s
,请你找出其中不含有重复字符的 最长 子串 的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
思路:
滑动窗口。遍历整个字符串,每遍历到一个新的字符,则以它起点结合unordered_map来判断最长无重复的字串是多少,然后更答案maxlength。
cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int maxlenth=0;
for(int i=0;i<s.size();i++)
{
int j=i;
unordered_map<char,int> mp;
while(j<s.size()&&mp[s[j]]==0)
{
mp[s[j]]++;
j++;
}
maxlenth=max(maxlenth,j-i);
mp.erase(s[i]);
}
return maxlenth;
}
};