• 回文判断的三种写法


    谜题:回文

    回文是一个单词、数字、短语或其他字符序列,它正反向阅读时都相同。

    回文的最简单示例包括madam、racecar、mom、toot、rotor等等...

    谜题:回文

    这一次,我们将面临在面试中常遇到的一个常见挑战。问题如下:

    给定一个字符串,编写一个函数来检查它是否是回文。 首先,让我们弄清楚什么是回文。

    💡 回文是一个单词、数字、短语或其他字符序列,它正反向阅读时都相同。 回文的最简单示例包括madam、racecar、mom、toot、rotor等等。

    现在,我们已经准备好开始解决这个问题了。如果你需要复习你的知识,请点击下面的链接。👇👇👇

    探索Python

    Python经常用于创建网站和软件,以及自动化任务、分析数据和可视化信息。

    slys.dev Jakub Slys

    解决方案 #1

    检查给定字符串是否是回文的最简单方法是循环遍历每个字符,并将第一个字符与字符串的最后一个字符、第二个字符与倒数第二个字符等进行比较。

    如果任何字符不匹配,指定的字符串就不是回文。

    def check_palindrome(word: str) -> bool:
        length: int = len(word)
        for i in range(0, int(length / 2)):
            if word[i] != word[length - i - 1]:
                return False
        return True

    if __name__ == '__main__':
        word: str = input(f'Provide a word\n')
        is_palindrome: bool = check_palindrome(word)
        print(f'Is "{word}" a palindrome? {is_palindrome}')
    • 1

    我们创建了check_palindrome()函数,它以提供的文本作为参数,并返回一个布尔值,指示提供的字符串是否是回文。

    在函数内部,我们循环遍历从0到单词长度除以2的范围。在迭代时,我们将第一个字符与最后一个字符进行比较,将第二个字符与倒数第二个字符进行比较,依此类推。

    在主要部分,我们提示用户输入一个单词,调用check_palindrome()函数,然后打印结果。

    ❯ python3 main.py
    Provide a word
    racecar
    Is "racecar" a palindrome? True
    Provide a word
    cow
    Is "cow" a palindrome? False
    • 1

    执行脚本会正确显示,racecar是回文,而cow不是,所以它完美地工作!

    解决方案 #2

    前一个解决方案非常幼稚,并且没有使用Python中提供的许多内置函数的优势。

    这次我们将重构check_palindorme()函数,以使用reversed()函数和字符串的join()方法。

    def check_palindrome(word: str) -> bool:
        reversed_word: str = ''.join(reversed(word))
        return word == reversed_word

    if __name__ == '__main__':
        word: str = input(f'Provide a word\n')
        is_palindrome: bool = check_palindrome(word)
        print(f'Is "{word}" a palindrome? {is_palindrome}')
    • 1

    reversed()函数返回一个反向迭代器,从末尾开始迭代。

    该迭代器传递给join()方法以形成一个字符串。

    ''用于提供用于连接来自迭代器的元素的字符 - 在我们的特定情况下,它只是一个空字符串。

    这样我们就获得了一个新的反转字符串。最后,我们将其与原始字符串进行比较。

    ❯ python3 main.py
    Provide a word
    racecar
    Is "racecar" a palindrome? True
    Provide a word
    cow
    Is "cow" a palindrome? False
    • 1

    仍然有效!😁

    解决方案 #3

    我们可以通过使用方括号[]使前一个解决方案更加简洁。

    def check_palindrome(word: str) -> bool:
        return word == word[::-1]

    if __name__ == '__main__':
        word: str = input(f'Provide a word\n')
        is_palindrome: bool = check_palindrome(word)
        print(f'Is "{word}" a palindrome? {is_palindrome}')
    • 1

    现在,逻辑简化为一行代码!

    ❯ python3 main.py
    Provide a word
    racecar
    Is "racecar" a palindrome? True
    Provide a word
    cow
    Is "cow" a palindrome? False
    • 1

    完美的胜利!😂

    总结

    我们了解了回文是一个单词、数字、短语或其他字符序列,它正反向阅读时都相同。我们提供了三种检查文本是否为回文的方法。

    第一种解决方案比较稚嫩,涉及迭代序列中的每个字符。

    第二种解决方案使用内置函数和方法来反转文本进行比较。

    最后一种解决方案最为简洁,使用方括号来反转字符串。

    在选择适当的方法时,我们必须非常小心,因为它们会极大地影响代码的可读性和可维护性。

    本文由 mdnice 多平台发布

  • 相关阅读:
    Pycharm正版2022.2.2 | 官方翻译插件更新tkk失败解决
    北方工业大学计算机考研资料汇总
    “低代码”在企业数字化转型中扮演着什么角色?
    zemax场曲/畸变图与网格畸变图
    jQuery,解决命名冲突的问题
    生产级Stable Diffusion AI服务部署指南【BentoML】
    我的大二web课程设计 使用HTML做一个简单漂亮的页面(纯html代码)
    java.util.ConcurrentModificationException异常原因及解决方法
    html table 如何导出为excel表格案例分享
    API接口介绍,获得淘宝app产品详情原数据
  • 原文地址:https://blog.csdn.net/qq_40523298/article/details/133692164