首页 > 其他分享 >01串修改

01串修改

时间:2022-12-23 11:45:38浏览次数:59  
标签:字符 ch int 修改 01 字符串 操作

给定一个只包含'0'和'1'两种字符的字符串,每次操作可以选择相邻的两个字符,将它们同时变成'0'或者同时变成'1'。
请问最少多少次操作后,所有的字符都相同?

输入例子:
"1001101"
输出例子:
2

很明显是改成全1字符串或者全0字符串,但是究竟改哪个呢?不知道,都改一遍,取操作次数少的那个
当然并不是真的执行修改操作,否则就不能重复计数了
对于一个连续0/1段,操作次数是:字段长度/2(向上取整)

如何向上取整呢?可以使用ceil()函数,也可以自行实现

比如这里就是一个更巧妙的写法

            for(i=0;i<n;i++){
                if(str[i]==c)res++;
                else res=0;  
                if(res&1)ans++;         //等价于向上取整。当连续段长度为奇数时计数。
            }

以下是本人的答案

int minOperations(string str) {
	int count, res = 501;
	double len;
	// 这个循环很有意思,不仅是循环两次,更是用到了每次循环的字符
	for (char ch = '0'; ch <= '1'; ch++) {
		count = 0,len=0.0;
		for (char cha : str) {
			if (cha == ch) len++;
			else {
				if (len != 0) {
					// 这里如果是int/2会出现结果为0的情况
					count += ceil(len / 2.0);
					len = 0;
				}
			}
		}
		if (len != 0) count += ceil(len / 2.0);// 处理结尾剩下的部分
		res = min(res, count);
	}
	return res;
}

标签:字符,ch,int,修改,01,字符串,操作
From: https://www.cnblogs.com/yaocy/p/17000346.html

相关文章

  • SVN培训笔记(下拉项目、同步修改、添加文件、修改文件、删除文件、改名文件等)
    前言  为了方便新加入团队的员工熟悉团队协作开发。  为了将好东西整理分享给有需要的网友。  将SVN内部员工培训文档公开,以方便更多的人,提高知识获取速度,尽快熟......
  • 2019年十一总结
    到现在为止,我已经来提高班整整半年了,可能我比同期的小伙伴们要来的早一些,所以要比他们更多的了解了提高班。很有幸这个月可以做我们期的CEO(也多亏师哥师姐对我的认可)。其实......
  • 2019再见,2020你好!
    今天是2020年1月1日,我来提高班已经整整8个月了,大学毕业已经六个月了,在这八个月里我不仅仅 知识上有很大的收获,在社交或者说是与他人沟通上都有很大的改变。六个月前在我还......
  • SQL Server 2019 附加数据库失败
    SQLServer2019附加数据库失败一、附加数据库失败将分离的数据重新附加回来,发现失败了...通过网上查询,原因是:分离出来的数据库文件(xxx.mdf和xxx_log.ldf)对于操作系......
  • 洛谷 P2679 [NOIP2015 提高组]子串
    \(70pts\):记\(sub_A(i)\)表示\(A\)的前\(i\)个字符构成的子串,相应地,\(sub_B(i)\)为\(B\)的前\(i\)个字符构成的子串。设\(f(i,j,k)\)表示在\(sub_A(i......
  • 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01
    书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。Ruby是一门在面向对象层面无所不用其极的解释型编程语言。我们可以把编写Ruby代......
  • VS 2019 目标框架中看不到 Net Core 3.X
    VS2019 目标框架中没有.NETCore3.X、.Net5.0 ​​https://dotnet.microsoft.com/download/dotnet-core/3.0​​  VisualStudio2019(v16.3orlater)原因:VS2019......
  • 200015 计算柱的箍筋根数已知长高和加密区非加密区
    点击查看代码<?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';$tit='......
  • 寄语自己-2012
    2012年新年即到,谨写此文自勉:睡早点,多休息,不透支体能;少喝点,多喝水,不藐视养生;吃好点,多运动,不远离健康。豁达点,多宽容,不自寻烦恼;坚强点,多微笑,不牵手脆弱;踏实点,多务实,......
  • Fabric.js 修改画布交互方式到底有什么用?
    本文简介点赞+关注+收藏=学会了fabric.js为我们提供了很多厉害的方法。今天要搞明白的一个东西是canvas.interactive。官方文档对canvas.interactive的解释......