Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
求一个字符串s里面最长的没有重复字符的子字符串的长度
有个问题,如果把list.size()直接放在if的判断条件里会出问题,原因未知,所以用了一个k
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = s.length();
int maxx = 0;
set<char>setc;
list<char>listc;
for (int i = 0; i < len; i++)
{
int numOfSet = setc.size();
setc.insert(s[i]);
int numOfSet2 = setc.size();
listc.push_back(s[i]);
if (numOfSet == numOfSet2) {
while (listc.front() != s[i]) {
setc.erase(listc.front());
listc.pop_front();
}
listc.pop_front();
}
else {
int k = listc.size();
if (k > maxx) {
maxx = listc.size();
}
}
}
return maxx;
}
};