思维

小红的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()
#每日一题挑战#
全部评论

相关推荐

2025-11-07 11:05
已编辑
腾讯_csig_软件开发(实习员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务