2017-07-29 3 views
-4

私は文字列から派生した可能な最長の回文をすべて見つける必要がありますか?私が取得しています何すべての最長の回文を見つける - 唯一の取得

は唯一のものである:例えばのための

herp = "" 

def isPalindrome(s): 
    if s == s[::-1] : 
     return True 

s = input() 

for idy, item in enumerate(s): 
    for idx, item in enumerate(s): 
     derp = s[idy:idx+1] 
     if isPalindrome(derp) and (len(derp) > len(herp)): 
      herp = derp 

print(herp) 

。例によればINTNI NITIN

+0

_all longest_? –

+0

@ Sнаđошƒаӽ2つの最長の回文がある場合(例えば、両方とも長さが長い、例えば5の場合) –

+0

@ YaShChaudhary 1つの入力で2つの最も長い回文を検索したいですか?入力と出力の例を共有してください。 –

答えて

1

:文字列がNITIN

出力されますが、最初にすべての順列を取得し、回文であるものをチェックする必要がありますので「INTNIは」「ニティン」の順列です。

だからあなたの 'isPalindrome' 機能を使って、あなたはこれを試みることができる:

from itertools import permutations 
def getPalindromes(stringVar): 
    result = set() 
    perms = [''.join(p) for p in permutations(stringVar)] 
    for perm in perms: 
     if isPalindrome(perm): 
      result.add(perm) 
    return result 
+0

これは 'AttributeError: 'list'オブジェクトに属性 'add ' – TemporalWolf

+0

あなたは間違いなく、実際には繰り返しを避けるためにセットを使うのが良いです。 –

+0

右の 'result = set()'は、もっとうまくフィットします。 – TemporalWolf

関連する問題