给定一个字符串,我们的任务是检查它是否为回文。所谓回文,是指正读和反读都相同的字符串。例如,“madam”是一个回文,而“hello”则不是。
使用双指针技术
这种方法从两端向中间逐个比较字符。它是最有效的,因为它只检查字符串的一半,而无需创建额外的副本。
Python
CODEBLOCK_ce273759
Output
Yes
说明:
- while 循环 会在 i < j 的条件下,从两端向中心比较字符。
- 如果没有发现不匹配,指针会向内移动以进行下一次比较。
- 循环结束后,如果 is_palindrome 为 True,则打印“Yes”,否则打印“No”。
使用 all() 配合生成器表达式
这种方法利用生成器表达式来检查所有镜像位置的字符是否相等。如果所有比较都通过,则该字符串是回文。
Python
CODEBLOCK_5603da4f
Output
Yes
说明:
- range(len(s)//2) 生成字符串前半部分的索引。
- s[-i-1] 访问从字符串末尾开始的字符。
- s[i] == s[-i-1] 检查镜像位置的字符是否相等。
- all() 只有当每个比较结果都为 True 时才返回 True。
使用切片
这种方法使用切片 (s[::-1]) 来反转字符串,并将其与原始字符串进行比较。如果两者匹配,则该字符串是回文。
Python
CODEBLOCK_7e18332e
Output
Yes
说明: 它将字符串 s 与其反转形式 s[::-1] 进行比较。如果相等,则打印“Yes”,否则打印“No”。
使用 reversed() + join()
这种方法利用 reversed() 和 join() 创建字符串的反转版本,然后将其与原始字符串进行比较。如果它们匹配,则是回文。
Python
CODEBLOCK_9241b995
Output
No
说明: 它使用 ‘‘.join(reversed(s)) 创建字符串的反转版本,并将其与原始字符串进行比较。如果相等,则打印“Yes”,否则打印“No”。