这是最开始写的错误版本,对于题目的具体问题理解不足。
cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.length();
int left = 0, right = 1;
int mmax = -1;
unordered_set<int> uset;
while ( right <= n - 1)
{
uset.insert(s[left]);
if (uset.count(s[right]) > 0)
{
left++;
}
else
{
uset.insert(s[right]);
}
right++;
mmax = max(mmax, (int)(uset.size()));
}
return mmax;
}
};
加了n = 0和1时的特判。
leetcode对于max要求两个参数类型一致,卡的比较紧。
用了unordered_set复杂度是n^2logn,看来leetcode可以多用stl少考虑复杂度,先写最暴力的试试。
cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.length();
if (n == 0) return 0;
if (n == 1) return 1;
int left = 0, right = 1;
int mmax = 0;
unordered_set<int> uset;
while ( right <= n - 1)
{
uset.insert(s[left]);
if (uset.count(s[right]) > 0)
{
while (s[left] != s[right])
{
uset.erase(s[left]);
left++;
}
left++;
}
else
{
uset.insert(s[right]);
}
mmax = max(mmax, (int)(uset.size()));
right++;
}
// if (mmax == 0) return 1;
return mmax;
}
};