Python中的回文:如何检查一个数字是否为回文?
什么是回文?
回文是指从左到右读和从右到左读都相同的字符串。换句话说,回文字符串是指其反转等于原始字符串的字符串。
例如,civic、madam是回文。
Cat不是回文。因为它的反转是tac,它不等于原始字符串(cat)。
编写一个程序来查找输入字符串是否为回文。
方法1 - 查找字符串的反转
程序中需要的主要内容是查找字符串的反转。
反转可以使用任何反转字符串的方法来找到。我们将使用简单的切片方法来反转字符串。内置的 ‘’.join(reversed()) 也可以使用。虽然还有其他方法可以反转字符串,但我们将使用简单的方法。
将反转后的字符串与原始字符串进行比较。
如果两个字符串相等,则返回true,否则返回false。
示例
def isPalindrome(s): rev=s[::-1] if(rev==s): return True return False print("Enter a string") st=input() print(isPalindrome(st))
输出
Enter a string madam True
方法2 - 不查找字符串的反转
其思想是连续比较字符串首尾字符,直到它们不相等。
我们将看到两个不查找字符串反转的示例:
字符串值 "madam"
我们比较第一个和最后一个字符,它们相等,接下来我们比较第二个和倒数第二个字符,它们也相等。最后我们只剩下一个字符。因此,该字符串是回文。
字符串值 "reader"
字符在第二个和倒数第二个元素之间的比较时相等。
当第三个和倒数第三个字符比较时,它们不相等,因此它不是回文。
我们可以通过递归或使用两个指针来实现这个想法。我们将使用两个指针来实现。我们从起始指针为0和结束指针为最后一个索引开始。我们开始比较,如果字符相等,我们增加起始指针并减少结束指针(从而将它们带到第二个和倒数第二个字符等等)。
我们什么时候返回false?如果我们发现任何一组指针的字符不相等,我们不需要查找其他索引,我们可以返回False。
我们什么时候返回True?在另一种情况下,如果字符串是回文,当两个指针相等(只剩下一个字符需要检查)或起始指针超过结束指针(所有字符都已检查)时,我们将返回True,因此返回true。
示例
def isPalindrome(s): rev=s[::-1] if(rev==s): return True return False print("Enter a string") st=input() print(isPalindrome(st))
输出
Enter a string reader False >>> Enter a string madam True
广告