题目:
分析:
题目的意思就是说,我找最长的一段连续的字符串,该串应该满足的是最多只包含两种元素。
五指针问题吧!
代码:
if(t.size()<=2) return t.size();
int b1=0,b2=1;
//b1 指向第一个的开始 b2 指向第二个的开始
int e1=0,e2=1;
//b1 指向第一个的结束 b2 指向第二个的结束
while(t[b2]==t[b1])
{
b2++;
if(b2==t.size()) return t.size();
}
e1=b2-1;
e2=b2;
int maxx=b2+1-e1;
int k=b2+1;//向前移动的指针
while(k<t.size())
{
if(t[k]==t[e1])
{
maxx=max(maxx,k+1-b1);
e1=k;
k++;
continue;
}
else if(t[k]==t[e2]){
maxx=max(maxx,k+1-b1);
e2=k;
k++;
continue;
}
if(e1<e2)
{
b1=e1+1;
e1=e2;
}
else {
b1=e2+1;
}
b2=k;
e2=k;
}
return maxx;