问题描述:给定一个字符串,返回该字符串中最大子串,该子串满足连续,并且其中没有重复字符。
leetcode c++代码的一种解法如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left = 0, max = 0;
vector<int> m(128, 0);
for (int right = 0; right < s.size();) {
unsigned char ch = s[right];
int index = m[ch];
if (index++ != 0)
left = left > index ? left : index;
m[ch] = right++;
max = max > right - left? max : right - left;
}
return max;
}
};
c++代码解法分析:
方法是利用两个指针来界定最长无重复的子字符串,left表示左边界字符位置,right表示右边界字符位置。
在查找的过程中,两个指针都是在动态发生变化的,right从0开始到s.size()结束,每一次循环回得出一个
最大子字符串的长度,当*right遇到与前面出现的字符相同时,就会更新left和right的值。