利用滑动窗口
class Solution {
public:
int lengthOfLongestSubstring(string s)
{
if(s.size() == 0)
return 0;
unordered_set<char> lookup;
int max_str = 0;
int left = 0;
for(int i = 0; i < s.size(); i++)
{
while(lookup.find(s[i]) != lookup.end())
{
lookup.erase(s[left]);
left++;
}
max_str = max(max_str, i - left + 1);
lookup.insert(s[i]);
}
return max_str;
}
};
public class Solution {
public int LengthOfLongestSubstring(string s)
{
//if
List<char> ls = new List<char>();
int i;
int max = 0;
for(i = 0; i < s.Length ; i++)
{
if(ls.Contains(s[i]))
{
ls.RemoveRange(0, ls.IndexOf(s[i]) + 1);
}
ls.Add(s[i]);
max = max > ls.Count ? max : ls.Count;
}
return max;
}
}