forループを使わずに文字列中で最長の文字列を見つける関数を作ろうとしています。同じ長さの回文がある場合は、アルファベット順に最初に出現するものを生成します。例: "" => ""、 "bcd" => "b"、 "acaba" => abaループなしの文字列中の最長のパインドームPython 3
これはオーバーフローでこれを見つけましたが、これはループのために使用し、最初の回文を見つける以外は同様です。
def palindromes(text):
results = []
for i in range(len(text)):
for j in range(0, i):
chunk = text[j:i + 1]
if chunk == chunk[::-1]:
results.append(chunk)
return text.index(max(results, key=len)), results
Iは、使用を考えていた方法は、各部分がそれに等しいかどうかをチェックすることで、逆サブだ[:: - 1]。しかし、私はどのように各サブストリングを得るか分からない。私は再帰で文字列の最後または最初の位置を取り除くことができますが、それは真ん中の部分文字列をチェックしません。
ヒント:文字列 's'の中の最長の文字列は' s'自身であるか、 's [: - 1]'で最長か 's' [1:]'で最長です ' – Julien