3 无重复字符的最长子串
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
题目给出的接口为:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
}
};
题目分析
最常用的可见字符变量的ASCII范围在32-128内,我们这里开设一个char范围大小的vector空间,每个变量表示的是该字符出现的最后位置。
代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector<int> num(128, -1);
int maxLen = 0, flag = -1;
for (int i = 0; i != s.length(); i++) {
if (num[s[i]] > flag)
flag = num[s[i]];
num[s[i]] = i;
maxLen = max(maxLen, i - flag);
}
return maxLen;
}
};