主要解决求最长不重复子串问题
如果遇到这种题,还是开两个for来做的话,笔试那是必stl的。
例题1:
题解:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int z, l = 0, r = 0, sum = 0;
vector<int> vi;
cin >> z;
set<int> si;
while (z--)
{
int c;
cin >> c;
vi.push_back(c);
}
while (l < vi.size() && r < vi.size())
{
if (si.find(vi[r]) == si.end())
{
si.insert(vi[r++]);
sum = max(sum, r - l);
}
else si.erase(vi[l++]);
}
cout << sum;
}
例题2:
int lengthOfLongestSubstring(string s)
{
int l = 0, r = 0, sum = 0;
set<char> sc;
while (r < s.size())
{
if (sc.find(s[r]) == sc.end())
{
sc.insert(s[r++]);
sum = max(sum, r - l);
}
else sc.erase(s[l++]);
}
return sum;
}