题目描述
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: 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.
解题
class Solution {
public:
int lengthOfLongestSubstring(string s) {
size_t res = 0;
size_t curSz = 0;
string container;
for (size_t i = 0; i < s.size(); i++) {
string::size_type pos = container.rfind(s[i]);
if (pos == string::npos) {
container.push_back(s[i]);
curSz++;
res = res < curSz ? curSz : res;
} else {
if (pos == container.size() - 1) {
container = "";
} else {
container = container.substr(pos + 1);
}
container.push_back(s[i]);
curSz = container.size();
res = res < curSz ? curSz : res;
}
}
res = res < curSz ? curSz : res;
return res;
}
};