思路:遍历字符串,统计全是0的区间的个数,乘2即为结果。
注意:当输入全为0时需要加特判;s[0]为0时,结果需要-1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int judge(char* s)//判断输入是否全为0
{
int len = strlen(s);
for (int i = 0; i < len; i++)
if (s[i] == '1')
return 0;
return 1;
}
int main()
{
char s[10000];cin >> s;
int len = strlen(s), cnt = 0;
if (judge(s))cout << 1;//输入全为0时,翻转一次
else {
for (int i = 0; i < len; i++)
if (s[i] == '0') {
cnt++;
if (s[i + 1] == '0')
cnt--;
}
int result = cnt * 2;
if (s[0] == '0')result--;//第一个硬币为反面时,结果-1
cout<<result;
}
return 0;
}