无重复字符的最长子串
题目链接:无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。
方法一:暴力?
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int ans = 0;
for (int i = 0;i < s.size();i++) {
unordered_set<char> occ;
int num = 1;
occ.insert(s[i]);
for (int j = i+1;j < s.size();j++) {
if (!occ.count(s[j])) {
occ.insert(s[j]);
num++;
}else break;
}
ans = max(ans,num);
}
return ans;
}
};方法二:滑动窗口
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_set<char> occ;
int i = 0;
int ans = 0;
int n = s.size();
for (int j = 0;j < n;j++) {
while (i < j && occ.count(s[j]) != 0) {
occ.erase(s[i++]);
}
occ.insert(s[j]);
ans = max(ans,j-i+1);
}
return ans;
}
};