在 Python 中保存最长的列表

Saving longest list in Python

我正确地打印了输入字符串的每个回文子字符串。然后我 return 最后的回文子串是 ["?"]。很有道理。

def longestPalindrome(s):
    longest = []
    palindrome = []
    for i in range(len(s)):
        for j in range(i, len(s)):
            palindrome.append(s[j])
            if palindrome == palindrome[::-1]:
                print(palindrome)
                longest = palindrome
        palindrome = []
    return longest

print(longestPalindrome("What kind of racecar do you drive?"))

我试图通过像这样更改 if 语句来获得最长的回文。

if palindrome == palindrome[::-1] and len(palindrome) > len(longest):

这没有按预期工作。我只打印第一个回文 ["W"] 然后 return 在列表 ["W", "h", ...]

中打印整个字符串

当您执行 longest = palindrome 时,您将 longest 列表的引用指向 palindrome,因此 palindrome.append(s[j]) 也是 附加到 longest

您需要复制列表。

longest = palindrome[:]

例如,

def longestPalindrome(s):
    longest = []
    palindrome = []
    for i in range(len(s)):
        for j in range(i, len(s)):
            palindrome.append(s[j])
            if palindrome == palindrome[::-1] and len(palindrome) > len(longest):
                # print(palindrome, i, j)
                longest = palindrome[:]
        palindrome = []
    return ''.join(longest)

print(repr(longestPalindrome("What kind of racecar do you drive?")))

你的功能应该 return ' racecar ' 和你的 "fix" 一样。

或者您可以简单地使用字符串而不是列表。