回文是从左到右或从右到左读取时相同的字符串。换句话说,回文字符串是其反向与原始字符串相等的字符串。
例如,公民,夫人就是回文。
猫不是回文。由于其反向是tac,所以它不等于原始字符串(cat)。
编写程序以查找输入字符串是否是回文。
程序中所需的主要内容是查找字符串的反序。
可以使用任何一种反转字符串的方法来找到相反的字符串。我们将使用简单的切片方法来反转字符串。reversed()也可以使用内置的''.join()。尽管还有其他方法可以反转字符串,但我们将使用一种简单的方法。
将反向字符串与原始字符串进行比较。
如果两个字符串相等,则返回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
这个想法是连续比较字符串的第一个索引和最后一个索引的字符,直到它们不相等为止。
我们将看到两个示例,而没有找到字符串的反面-
我们比较相等的第一个和最后一个字符,进一步比较相等的第二个和倒数第二个字符。最后,我们只剩下一个字符。因此,字符串是回文。
字符相等,直到倒数第二个和倒数第二个元素之间进行比较。
比较倒数第三个和倒数第二个字符时,它们不相等,因此不是回文。
我们可以通过递归或使用两个指针来实现这个想法。我们将使用两个指针来实现。我们从0的起始指针开始,到最后一个索引的结束指针。我们开始比较,如果字符相等,则我们增加起始指针并减少结束指针(因此将它们移至倒数第二个字符,等等)。
我们什么时候返回假?如果发现任何一组指针的字符都不相等,则无需寻找其他索引,并且可以返回False。
我们什么时候返回True?在另一种情况下,如果字符串是回文,则当两个指针都相等(仅剩下1字符要检查)或开始指针超过结束指针(所有字符都被检查)时,我们将返回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