回文判断的三种写法

谜题:回文

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

回文的最简单示例包括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}')

我们创建了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

执行脚本会正确显示,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}')

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

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

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

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

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

仍然有效!😁

解决方案 #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}')

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

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

完美的胜利!😂

总结

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

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

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

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

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

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值