我们考虑字符串处理方面有两种情况,第一种是第一个字符不变,改变其他字符。第二种是第一个字符改变,再去改变其他字符,最后取一个 min\min 即可。 代码:

#include<bits/stdc++.h>
using namespace std;
signed main(){
	string s;
	cin>>s;
	int ans=0;
	int ans2=0;
	string c=s;
	for(int i=1;i<s.size();i++){
		if(s[i]==s[i-1]){
			if(s[i]=='0'?s[i]='1':s[i]='0');
			ans+=i+1;
		}
	}
	ans2++;
	if(c[0]=='1'?c[0]='0':c[0]='1');
	for(int i=1;i<c.size();i++){
		if(c[i]==c[i-1]){
			if(c[i]=='0'?c[i]='1':c[i]='0')
			ans2+=i+1;
		}
	}
	cout<<min(ans,ans2);
	return 0;
}