在 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" 一样。
或者您可以简单地使用字符串而不是列表。
我正确地打印了输入字符串的每个回文子字符串。然后我 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" 一样。
或者您可以简单地使用字符串而不是列表。