字符串子串中的最长回文
Longest palindrome in a substring of a string
我试图找到字符串中最长的回文,这是我的做法。
def palindrome(x):
rev = x[::-1]
a = False
if (rev==x):
a = True
return a
def longest_palindrome(s):
last = len(s)
lst = []
for i in range (last):
for j in range (i+1,last):
b = s[i] + s[j]
a = palindrome(b)
if (a==True):
lst.append(b)
else:
continue
return lst
a = input("Enter the string: ")
longest_palindrome(a)
如果我的输入是 "aaba",它会产生输出 ['aa','aa','aa']
,而输出应该是 ['aa', 'aba']
。我迭代的方式有问题吗?
我认为您的代码中的问题在于查找子字符串。试试这个
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))
。
此代码将帮助
这应该没问题。
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")。
希望对您有所帮助。
我试图找到字符串中最长的回文,这是我的做法。
def palindrome(x):
rev = x[::-1]
a = False
if (rev==x):
a = True
return a
def longest_palindrome(s):
last = len(s)
lst = []
for i in range (last):
for j in range (i+1,last):
b = s[i] + s[j]
a = palindrome(b)
if (a==True):
lst.append(b)
else:
continue
return lst
a = input("Enter the string: ")
longest_palindrome(a)
如果我的输入是 "aaba",它会产生输出 ['aa','aa','aa']
,而输出应该是 ['aa', 'aba']
。我迭代的方式有问题吗?
我认为您的代码中的问题在于查找子字符串。试试这个
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))
。 此代码将帮助
这应该没问题。
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")。
希望对您有所帮助。