這道題我最開始的思路是用暴力法,直接使用兩次循環來進行,計算後看了大神的解答,使用了滑動窗口。
其實滑動窗口和暴力法的區別是滑動窗口比較的是窗口內的元素是否重複,來確定最大長度。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
set<char>cont;
int i=0,j=0,n=0,c=0;
n=s.size();
while(i<n&&j<n)
{
if(cont.find(s[j])!=cont.end())
{
cont.erase(s[i++]);
}
else
{
cont.insert(s[j++]);
c=max(c,j-i);
}
}
return c;
}
};