【问题标题】:Trying to test if the given string is a palindrome by words尝试通过单词测试给定的字符串是否是回文
【发布时间】:2020-05-07 03:40:11
【问题描述】:
您好,我正在尝试实现此输出。我试图通过比较第一个单词和最后一个单词、第二个单词和倒数第二个单词来查看字符串是否是回文。
国王,你很高兴你是国王是回文(或者这就是我想要达到的结果),因为第一个词与最后一个词(即国王)相似,第二个词与第二个词相似最后一个词(即是),第三个词类似于第三个最后一个词(即你)。因此,输出应该为真。 (这是我的作业要求)
我想要实现的输出:[True, False]
我得到的输出:[False]
【问题讨论】:
标签:
python
stack
palindrome
【解决方案1】:
您需要执行split 才能进行逐字比较。
另外,从bad_character 中取出' ' 并修复一些缩进即可:
def palindrome_word(a_str):
outputlist = []
bad_character = ['?', ',']
for element in a_str:
for words in bad_character:
element = element.replace(words, '')
element = element.lower().split()
outputlist.append(element == element[::-1])
return outputlist
或者使用re:
import re
def palindrome_word_re(a_str):
outputlist = []
for element in a_str:
element = element.lower()
words = re.findall('\w+', element)
outputlist.append(words == words[::-1])
return outputlist
两个输出:
palindrome_word(my_string)
palindrome_word_re(my_string)
[True, False]
【解决方案2】:
这是一个解决方案
def palindrome_word(a_str):
outputlist = []
bad_character = ['?', ',']
for element in a_str:
for words in bad_character:
element = element.replace(words, '')
element = element.lower()
result = (element.split())[::-1] == element.split()
outputlist.append(result)
return outputlist
my_string=["King, are you glad you are king?", "Hello Bye"]
print(palindrome_word(my_string))
外出
[True, False]
【解决方案3】:
另一种方法-
def palindrome_word(a_str):
import re
outputlist = []
for element in a_str:
str_arr = re.findall('\w+', element.lower())
is_palindrome = True
for i in range(int(len(str_arr)/2)):
if str_arr[i] != str_arr[-i-1]:
is_palindrome = False
break
outputlist.append(is_palindrome)
return outputlist
my_string=["King, are you glad you are king?", "Hello Bye"]
print(palindrome_word(my_string))
输出
[True, False]