给定一个字符串 s
,请你找出其中不含有重复字符的 最长 子串 的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc"
,所以其长度为 3。
思路:
滑动窗口。遍历整个字符串,每遍历到一个新的字符,则以它起点结合unordered_map来判断最长无重复的字串是多少,然后更答案maxlength。
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;}
};