回文字符串:一个字符串,不论是从左往右,还是从右往左,字符的顺序都是一样的(如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("Yesn");
    else
        printf("Non");
    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")

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!