回文串判断

方法一:使用栈的性质。将字符串的一半放入栈,再利用栈的先进后出的性质,来判断另一半字符串和栈中的元素是否相等。

代码如下:

/*解密回文*/
#include <stdio.h> 
#include <string.h>
int main()
{
    char a[105],s[105];
    int i,len,mid,next,top;
    gets(a);//
    len = strlen(a);//
    mid = len/2 - 1;//
    top = 0;//栈的初始化
    for(i = 0;i <= mid;i++)
    {
        s[++top] = a[i];
    } 
     
     if(len%2==0)
     {
         next=mid+1;
     }
     else
     {
         next = mid+2;
     }
     for(i = next;i <= len-1;i++)
     {
         if(a[i]!=s[top])
         {
             break;
         }
         top--;
     }
     if(top==0)
     {
         printf("YES");
     }
     else
     {
         printf("NO");
     }
        
    
     return 0;
 } 

方法二:利用递归的思想,也是从两头向中间开始比较。

代码如下:

#include <stdio.h> 
#include <string.h>
int fun(int low, int high, char *str, int length)
{
    if (length == 0 || length == 1)
        return  1;
    if (str[low] != str[high])
        return  0;
    return fun(low+1, high-1, str, length-2);
}
int main()
{
    char str[105];
    gets(str);
    int  length = strlen(str);
    if(fun(0, length-1, str, length))
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    return  0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值