回文字符串:一个字符串,不论是从左往右,还是从右往左,字符的顺序都是一样的(如abba,abcba等)
判断回文字符串比较简单,即用两个变量left,right模仿指针(一个指向第一个字符,一个指向最后一个字符),
每比对成功一次,left向右移动一位,right向左移动一位,如果left与right所指的元素不相等则退出,最后比较
left与right的大小,如果left>right则说明是回文字符串。
C语言版:
#include<stdio.h> #include<string.h> bool huiwen(char *c)//判断是否为回文字符串 { int len=strlen(c); int left=0,right=len-1; while(left<=right) { if(c[left]==c[right]) { left++; right--; } else break; } if(left>right) return true; else return false; } int main() { char c[100]; printf("请输入您要判断的字符串:") scanf("%s",c); if(huiwen(c)) printf("Yes "); else printf("No "); return 0; }
python版:
#尝试用python判断回文字符串 while True: str=input("please input a string:")#输入一个字符串 length=len(str)#求字符串长度 left=0#定义左右‘指针’ right=length-1 while left<=right:#判断 if str[left]==str[right]: left+=1 right-=1 else: break; if left>right: print("yes") else : print("no")
使用函数判断:
将字符串反序输出保存与原字符串比较
我们使用切片功能翻转文本。我们已经了解了我们可以通过使用 seq[a:b] 来从位置 a 开
始到位置 b 结束来对序列进行切片 。我们同样可以提供第三个参数来确定切片的步长
(Step) 。默认的步长为 1 ,它会返回一份连续的文本。如果给定一个负数步长,如 -1 ,
将返回翻转过的文本。
def reverse(text): return text[::1] def is_palindrome(text): return text==reverse(text) something = input("Enter text:") if is_palindrome(something): print("Yes,it is a palindrome") else: print("No,it is not a palindrome")