我的错解:
for _ in range(int(input())):
a = input()
b = input()
c = int(a)^int(b)
start = 1 + len(str(a)) - len(str(c))
last = 0
lst = []
for idx, num in enumerate(str(c)):
if num != last:
lst.append(idx+start)
last = num
lst2 = [0]
last = 0
for idx, num in enumerate(b):
if num != last:
lst2.append(idx+1)
last = num
if len(lst) < len(lst2):
print(*lst)
else:
print(*lst2)
别人的正解:
for _ in range(int(input())):
a = input()
b = input()
if '1' not in b:
print(0)
else:
c = bin(int(a, 2) ^ int(b, 2))[2:]
start = 1 + len(a) - len(c)
t1 = 0
lst = [start]
for i in range(len(c)):
if c[i] == str(t1):
lst.append(i + start)
t1 = 1 - t1
lst2 = [0]
start2 = 1
t2 = 1
for i in range(len(b)):
if b[i] == str(t2):
lst2.append(i + start2)
t2 = 1 - t2
if len(lst) > len(lst2):
print(*lst2)
else:
print(*lst)