题目链接
题目大意:
给你一个 01 字符串 可以翻转子串 问 最少翻转几次可以 得到 01 交替的字符串
解题思路:
只要存在连续的(无论 01 ) 都要把它们翻转下 然后把 0 和 1 的统计下 选择最大值
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
string a;
int main()
{
int t;
int i,s,n;
int ans=0;
int sum=0;
cin>>t;
while(t--)
{
cin>>n;
cin>>a;
ans=0;
sum=0;
for(i=0;i<n-1;i++)
{
if(a[i]==a[i+1])
{
if(a[i]=='0')
ans++;
else
sum++;
}
}
cout<<max(sum,ans)<<endl;
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
string a;
int main()
{
int t;
int i,s,n;
int ans=0;
int sum=0;
cin>>t;
while(t--)
{
cin>>n;
cin>>a;
ans=0;
sum=0;
for(i=0;i<n-1;i++)
{
if(a[i]==a[i+1])
ans++;
}
cout<<(ans+1)/2<<endl;
}
return 0;
}