以下を試してみましたが、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 の文字列を高速に実行するにはどうすればよいですか?
ありがとう。