我已经尝试了以下方法,但是当我尝试 17 个字符的字符串时会花费太多时间。
string = input()
def permute(xs, low=0):
if low + 1 >= len(xs):
yield xs
else:
for p in permute(xs, low + 1):
yield p
for i in range(low + 1, len(xs)):
xs[low], xs[i] = xs[i], xs[low]
for p in permute(xs, low + 1):
yield p
xs[low], xs[i] = xs[i], xs[low]
for p in permute(list(string)):
mstr = "".join(p)
if mstr == mstr[::-1]:
print("YES")
break
这实际上是我在hackerrank 上对“权力的游戏”挑战的解决方案。我怎样才能减少它的执行时间,让它运行得非常快,长度为 10^5 的字符串?
谢谢。