无重复字符的最长子串
题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
来源:力扣(LeetCode)
思路:
利用滑动窗口的思想,可以用两重循环解决,外重循环移动窗口,里层循环判断窗口内元素是否重复。
最终时间复杂度为O(n2),空间复杂度为O(n)
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int strat(0), end(0), len(0), num(0);
int size = s.size();
while (end < size) {
char temp = s[end];
for (int index = strat; index < end; index++) {
if (temp == s[index]) {
strat = index + 1;
len = end - strat;
break;
}
}
end++;
len++;
num = max(num, len);
}
return num;
}
};