思维
小红的01串
https://www.nowcoder.com/practice/8920f77fb2c0409a9f4f9025969110de
思路:思维题,我们考虑一下不同次数操作,有什么影响。一次操作时可以把相邻的两个元素翻转,也就是距离为1的元素进行翻转,比如"11"变成"00";两次操作时,可以把距离为2的元素进行翻转,比如"101"变成"000";三次操作时,可以把距离为3的元素进行翻转,比如说"1001"变成"0000",等等
一般来说,我们可以把任意距离的两个元素进行翻转,当然在字符串长度的约束下,这里的任意距离长度是length - 1,也就是在有限次操作中可以做完。那我们就只需要判断一下s中的"0"和"1"个数是否有偶数的存在即可,这样我们就可以相同元素间两两任意组合进行翻转,从而得到另一种元素,最终输出"Yes"即可,反之输出"No"
代码:
import sys
input = lambda: sys.stdin.readline().strip()
import math
inf = 10 ** 18
def I():
return input()
def II():
return int(input())
def MII():
return map(int, input().split())
def GMI():
return map(lambda x: int(x) - 1, input().split())
def LI():
return input().split()
def LII():
return list(map(int, input().split()))
def LFI():
return list(map(float, input().split()))
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))
'''
'''
def solve():
q = II()
for _ in range(q):
s = I()
zeros = s.count("0")
ones = s.count("1")
if zeros & 1 == 0 or ones & 1 == 0:
print("Yes")
else:
print("No")
t = 1
# t = II()
for _ in range(t):
solve()
#每日一题挑战#
腾讯成长空间 5981人发布
