思路如下:
附:C++代码如下
#include<bits/stdc++.h>
using namespace std;
int n,tpoi=1,a[55],tp,poi1=1,poi2,ans=1;
char c[5],tc;
int main()
{
while(true)//对输入的处理
{
++n;
tc=getchar();
if(tc=='\n')
break;
switch(tpoi)
{
case 1:
c[1]=tc;
++tpoi;
a[n]=1;
break;
case 2:
if(c[1]==tc)
a[n]=1;
else
{
c[2]=tc;
++tpoi;
a[n]=2;
}
break;
case 3:
if(c[1]==tc)
a[n]=1;
if(c[2]==tc)
a[n]=2;
if(c[1]!=tc&&c[2]!=tc)
{
a[n]=3;
c[3]=tc;
++tpoi;
}
break;
case 4:
if(tc==c[1])
a[n]=1;
if(tc==c[2])
a[n]=2;
if(tc==c[3])
a[n]=3;
break;
}
}
tp=a[1];poi2=n-1;
while(poi1!=poi2)//贪心过程
{
while(a[poi1]==tp&&poi1!=poi2)
++poi1;
while(a[poi2]==tp&&poi1!=poi2)
--poi2;
if(poi1!=poi2)
{
ans++;
tp=a[poi1];
}
}
if(a[poi1]!=tp)
ans++;
cout<<ans;
return 0;
}