数据结构——回文串判断(C语言)

该博客介绍了如何使用C语言编写一个判断回文串的程序。文章详细讲解了回文串的定义,并通过示例代码说明了在比较字符串时避免出现错误的方法,即先移动指针再进行比较。此外,还提供了获取字符串长度的辅助函数,整个程序实现了从用户输入到回文串判断的完整流程。
摘要由CSDN通过智能技术生成
  • 回文串判断
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE   10010
#define ElemType int

void InitString(char s1[MAXSIZE]){
    scanf("%s",s1);
}
void CheckIsSyn(char  s1[MAXSIZE],int length){
    //此处判断需要注意
    //错误示例:
    //int i=0,j=length-1;
    //while(i<=(j-1)&&s1[i++]==s1[j--]);
    //错误原因:比如字符串ababcaba,在比较最后两个字符b和c的时候
    //此时b和c不相等,但是i和j在s1[i++]==s1[j--]处仍然执行了i++和j--
    //导致下面的判断是仍然满足回文串条件(执行之后i>j,满足判断条件),所以出错了
    //解决办法:先执行++i和--j(先移动下标,再进行判断)
    //例如对于字符串ababcaba,在比较最后两个字符b和c的时候
    //此时先分别移动i和j到b和c的位置,再判断,此时b和c不相等,退出循环
    //执行下面判断条件的时候i仍然j,不满足(i>=j)
    int i=-1,j=length;
    //如果相同则继续比较下一个字符
    while(s1[++i]==s1[--j]&&i<=(j-1));
    if(i>=j&&length>0)
        printf("该字符串是回文串\n");
    else
        printf("该字符串不是回文串\n");
}
int getLength(char  s1[MAXSIZE]){
    int length=0,index=0;
    while(s1[index++]!='\0'){
        length++;
    }
    return length;
}
int main(){
    char s1[MAXSIZE];
    printf("输入字符串:");
    InitString(s1);
    printf("存储字符串为:%s\n",s1);
    int length=0;
    length=getLength(s1);
    printf("字符串长度为:%d\n",length);
    printf("判断是否为回文串\n");
    CheckIsSyn(s1,length);
    return 0;
}

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值