Alternative Thinking
规律题,不论怎么翻转都是增加2个(和前边连接加1个,和后面连接又加一个)
思路先把原数的“(0)101010…”个数找出,最后加2
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
const int N=1e5+10;
int a[N];
string s;
int n;
int main()
{
cin>>n>>s;
for(int i=1;i<=n;++i) a[i]=s[i-1]-'0';
int ans=1;
int pre=a[1];
for(int i=2;i<=n;++i)
{
if(a[i]!=pre)
{
pre=a[i];
ans++;
}
}
cout<<min(n,ans+2);
}