具体思路已经在代码注释中给出,这里不再赘述。

#include<iostream>
#include<algorithm>
using namespace std;
int t;
string s;
int main()
{
cin >> t;
while(t--)
{
cin >> s;
int len = s.size();
int total0 = 0, total1 = 0;
for(int i = 0; i < len; i++)
{
total0 += (s[i] == '0');
total1 += (s[i] == '1');
}
/**
最终要把它变成111...000 或者 000...111 或者 全零 或者 全1
*/ int ans = min(total0, total1);
int nr0 = 0, nr1 = 0;
for(int i = 0; i < len; i++)
{
nr0 += (s[i] == '0');
nr1 += (s[i] == '1');
/**
假若把它变成111...000这种形式
那么对于左部分是0的部分,要对它进行翻转(也就是对它进行操作),
还要再加上右部分是1的个数
这部分就是total1 - nr1,nr1此时扮演左半部分为1的个数,总的1的个数减去它,
就是右半部分为1的个数。 */
ans = min(ans, nr0 + total1 - nr1);
/**
倘若把它变成000...111这种形式,思路和上面相似
*/ ans = min(ans, nr1 + total0 - nr0);
}
cout << ans << endl; }
}

最新文章

  1. Using Headless Mode in the Java SE Platform--转
  2. 利用Swashbuckle生成Web API Help Pages
  3. 6周学习计划,攻克JavaScript难关(React/Redux/ES6 etc.)
  4. Tomcat端口占用
  5. 2,SFDC 管理员篇 - 组织架构
  6. [EntLib]微软企业库5.0 学习之路——第一步、基本入门
  7. 在objc项目中使用常量的最佳实践
  8. js打开新的链接下载文件
  9. 如何在pl/sql developer 7运行到oracle存储过程设置断点的地方
  10. sysstat服务负载统计,如CPU占有率,网络使用率,磁盘速度
  11. Python之路:Python 基础(三)-文件操作
  12. Swift的笔记和参考
  13. 逐步在Windows上结合CopSSH + msysGit安装安装Git Server同时集成Git使用Visual Studio
  14. margin叠加相邻两个元素的上下margin是叠加在一起
  15. python数据分析入门学习笔记
  16. 201521123038 《Java程序设计》 第十周学习总结
  17. C#中抽象类与接口的区别
  18. DS1-13
  19. June 8. 2018 Week Week 23rd Friday
  20. Nginx+Keepalived双机热备

热门文章

  1. memcached线程模型
  2. 入职半年多,Guide哥总结了这些帮助你领先90%程序员的好习惯!
  3. C. p-binary(二进制暴力)
  4. CSS的基础使用
  5. spring boot中使用AJAX请求,并将回调函数赋值给input输入框
  6. 如何在Windows下安装MySQL5和MySQL8的多实例
  7. Git使用教程之新手也能看懂(一)
  8. FPGA学习心得汇总(手中写代码,心中有电路)
  9. xml(4)
  10. Python3+Pycharm+PyQt5环境搭建步骤