谜题:回文
回文是一个单词、数字、短语或其他字符序列,它正反向阅读时都相同。
回文的最简单示例包括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 多平台发布