• 回文判断的三种写法


    谜题:回文

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

    回文的最简单示例包括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 多平台发布

  • 相关阅读:
    docker-部署 redis 主从复制(一主,一从)tag:redis:6.2.6
    Kotlin协程:异步执行与同步获取
    分析 java.util.LinkedHashMap
    嵌入式 Linux 入门(七、Linux 下的环境变量)
    C/C++内存管理
    Linux 学习笔记(1-3)
    elasticsearch导出和导入数据
    R语言【base】——abs(),sqrt():杂项数学函数
    Window安装虚拟机+给虚拟机安装Linux
    计算机毕业设计Java创意产业园区管理(源码+系统+mysql数据库+lw文档)
  • 原文地址:https://blog.csdn.net/qq_40523298/article/details/133692164