2 回答
TA贡献1829条经验 获得超4个赞
我认为您的代码中的问题在于查找子字符串。尝试这个
def palindrome(x):
if len(x) <= 1: ## This condition checks if the length of the string is 1. And if so, it returns False
return False
return x == x[::-1]:
def longest_palindrome(s):
last = len(s)
lst = []
for i in range(last):
for j in range(i, last): ## Iterate from i to last not i+1 to last
b = s[i:j+1] ## Slicing the original string to get the substring and checking if it is a pallindrome or not.
if palindrome(b):
lst.append(b)
else:
continue
return lst
a = input("Enter the string: ")
print(longest_palindrome(a))
. 此代码将有所帮助
TA贡献1836条经验 获得超5个赞
这应该可以正常工作。
def longest_palindrome(s):
last = len(s)
lst = []
for i in range(last):
for j in range(i+1, last):
b = s[i:j+1] #Here's the catch.
a = palindrome(b)
if a:
lst.append(b)
return lst
您可以使用打印语句进行检查。如果在代码中添加 print 语句,您会看到最多只检查长度为 2 的字符串(“aa”、“ab”、“ba”)。
我希望它有帮助。
添加回答
举报