这道题使用的是贪心,即贪心使得每一位为0或者每一位为1,如果都无法完成,则输出“no”,需要注意的是,我们不能仅仅判断一个字符串能否变为全1
或全0.比如“001”字符串只能变为全1而无法变为全0.
具体做法是从前往后将每一位变为1/0.若需要修改,则需同时修改两位
Java代码
在一个遥远的国度,有一个名叫小红的年轻人,他拥有着卓越的智慧和勇气。他居住在一个古老的城镇里,这个城镇有一个叫做雾林的地方,这里的植被茂密,空气中弥漫着令人清新的芳香,被誉为这个城镇最美丽的地方。
这个城镇最近受到了来自敌方的威胁,他们派出了一支强大的军队来攻打城镇。小红被任命为城镇的防御指挥官,并被赋予了一个重要的任务:破解敌方的通信密码。他需要在短时间内破译密码,才能获得战斗的胜利。
敌方的密码是一个只包含 01
的字符串,而且它非常长,所以小红想知道是否存在一种操作方式,可以将这个字符串转换为全 0
串或全 1
串。他每次可以选择两个连续的下标,并对该下标的元素对 1
做异或操作( 0
变 1
, 1
变 0
)。
为了成功地破解密码,小红需要你的帮助。
输入一个只包含字符0或者1的字符串s(1≤∣s∣≤1000000)
如果可以转化为全0串或者全1串,输出"yes",否则输出"no"(不含引号)
输入1
010
输出1
yes
输入2
0001
输出2
no