给定一个字符串
s,请你找出其中不含有重复字符的最长 子串的长度。示例 1:
输入:s = "abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。示例 2:
输入:s = "bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为 1。示例 3:
输入:s = "pwwkew"输出:3解释:因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。提示:
0 <= s.length <= 5 * 104s由英文字母、数字、符号和空格组成
class Solution { public: int lengthOfLongestSubstring(string s) { int left=0; unordered_map<char,int> charIndex; int maxLen=0; for(int right=0;right<s.size();right++) { char c=s[right]; if(charIndex.count(c)&&left<=charIndex[c]) { left=charIndex[c]+1; } charIndex[c]=right; maxLen=max(maxLen,right-left+1); } return maxLen; } };