首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查字符串是否为回文返回错误结果

检查字符串是否为回文返回错误结果
EN

Stack Overflow用户
提问于 2019-04-12 01:53:28
回答 1查看 29关注 0票数 0

我正在尝试使用递归检查一个字符串是否为回文。我目前只是在尝试开发简单的案例。

我的函数接受一个字符串作为输入。然后它会去掉标点符号。我做的下一件事是检查单词的第一个字母是否等于单词的最后一个字母。如果是,则返回字符串1。如果不是,则返回第二个字符串。

代码语言:javascript
运行
复制
def palindrome(word):    
    stringOne = "It's a palindrome"
    stringTwo = "It's not a palindrome"
    edit = word.strip("!").strip(",").strip("")

    if edit[0] == edit[-1]:
        return stringOne 
    else:
        return stringTwo

print(palindrome("Yay!"))

代码正在运行。然而,输入字符串"Yay!“(这是一个回文)返回“它不是一个回文”。我的if语句不工作有什么原因吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-12 02:26:46

除了@RWRkeSBZ在评论中指出的字母大小写问题之外,这是一个很好的例子,说明了在哪里使用递归助手函数是有意义的。一旦您清理了字符串,使其只包含字母,就没有理由在递归时再次这样做。取而代之的是,我们有一个处理这些问题的例程,以及一个更专注、更递归的助手函数来执行真正的处理:

代码语言:javascript
运行
复制
def palindrome_recursive(letters):
    if len(letters) <= 1:
        return True

    if letters[0] != letters[-1]:
        return False

    return palindrome_recursive(letters[1:-1])

def palindrome(phrase):
    stringOne = "It's a palindrome"
    stringTwo = "It's not a palindrome"

    edit = phrase.strip("!,").strip().lower()

    if palindrome_recursive(edit):
        return stringOne

    return stringTwo

print(palindrome("Able was I ere I saw Elba!"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55638545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档