如何检查一个单词或句子是否是回文?

2024-04-26 06:05:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该用代码检查一个单词或句子是否是回文,我可以检查单词,但是我在检查句子是否是回文时遇到了麻烦。这是我的代码,它很短,但我不确定如何添加它来检查句子回文。我是python的初学者,我已经看过其他人的代码了,它们太复杂了,我不太明白。我写的是:

def is_palindrome(s):
  if s[::1] == s[::-1]:
    return True
  else:
    return False

这是一个句子回文的例子:“红玫瑰没有风险,先生,护士命令。”(如果你忽略空格和特殊字符)


Tags: 代码falsetruereturnifisdef单词
3条回答

为了检查句子回文,算法似乎是:

  1. 删除任何非字母字符
  2. 不敏感地比较new_s和{}大小写。在

您可以通过执行以下操作来实现前者:

import string

valid = set(string.ascii_letters)
result_s = ''.join([ch for ch in original_s if ch in valid])

然后通过以下方式:

^{pr2}$

把整个事情和:

import string

s = "Red roses run no risk, sir, on nurses order"
s2 = "abcba"
s_fail = "blah"

def is_palindrome(s):
    valid = set(string.ascii_letters)
    result_s = ''.join([ch for ch in s if ch in valid])
    cf_s = result_s.casefold()
    return cf_s == cf_s[::-1]

assert(is_palindrome(s))
assert(is_palindrome(s2))
assert(is_palindrome(s_fail))  # throws AssertionError
import string

def is_palindrome(s):
    whitelist = set(string.ascii_lowercase)
    s = s.lower()
    s = ''.join([char for char in s if char in whitelist])
    return s == s[::-1]

您可以过滤字符串以仅获得如下字母:

letters = ''.join(c for c in words if c in string.letters)
is_palindrome(letters)

您还必须调用lower

^{pr2}$

相关问题 更多 >

    热门问题