滑动窗口的思路 使用一个vector和两个指针来维护这个窗口。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int N = s.length();
int left = 0, right = 0;
vector<char> result;
size_t max = 0;
for (; right < N; right++)
{
vector<char>::iterator iter = find(result.begin(), result.end(), s[right]);
if (iter == result.end())
{
result.push_back(s[right]);
max = ((max > result.size()) ? max : result.size());
}
else
{
int tmp = iter - result.begin() + 1;
max = ((max > result.size()) ? max : result.size());
left += tmp;
result.erase(result.begin(), iter + 1);
result.push_back(s[right]);
}
}
return max;
}
};