网易测开笔试-优秀的01序列

给定01序列S, 序列S是优秀的01序列,优秀的01序列定义如下:
1、如果序列S,T是优秀的,则序列S+T是优秀的,+被定义为按顺序连接两个序列,即"010"+“110”=“010110”。
2、如果序列S是优秀的,则序列rev(S)也是优秀的。rev(S)被定义为按位翻转(0变1,1变0)序列S,并删去前导零。例如rev(“1100101”)=“11010”。

现在请你判断序列T是不是优秀的

不是很理解,记录一下

def rev(x):
    j = 0
    y = ""
    for i in x:
        if j==0 and i == "1":
            continue
        j+=1
        if i == "0":
            y+="1"
        else:
            y+="0"
    return y

def cur(s,t):
    tmp = set()
    while s:
        tmp.add(s)
        s1 = rev(s)
        s = s1
    if "1" in tmp or t in tmp:
        return('YES')
    tmp = list(tmp)
    for i in range(len(tmp)-1):
        for j in range(i,len(tmp)):
            if tmp[i]+tmp[j]==t or tmp[j]+tmp[i] == t:
                return('YES')
    return('NO')

n = int(input())
for _ in range(n):
    s = input()
    t = input()
    print(cur(s, t))

你可能感兴趣的:(求职)