C语言:判断回文字符串的两种简单方法

C语言:判断回文字符串的两种简单方法我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~之前写…

大家好,又见面了,我是你们的朋友全栈君。

任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~

C语言:判断回文字符串的两种简单方法

 

之前写过逆排序的数组实现,对于经典的回文问题却还没有深入研究过。今天抽空看了下,总结了两种比较常用的回文法。

一种是字符串(当然也可以叫数组法),此方法可以用来判断字符串输入以及INT类型的输入

另一种是数字输入,因为追求简便性所以此方法只能判断回文数,不能判断回文字符串。要想都判断也很简单,将变量类型调整即可实现

代码以及讲解如下:

/***判断回文数***/

//情况1.利用字符串判断回文
//实现方法:利用字符串指针从头尾分别判断

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#include <ctype.h>

//typedef char  Pre_;     方便调试回文时更改类型

bool Judge_char(const char *p); //声明一个布尔型变量的函数原型

int main(int argc, char *argv[])
{

    printf("Please enter the chars to judge:\n");

    bool re_value = 0;  //初始化逻辑变量
    char *k;
    scanf("%s", k);   //声明一个字符串指针,并将STDIN传入

    re_value = Judge_char(k);

    if (re_value){
        printf("This charset is Palindrom");
    }
    else {
        printf("this charset is not Palindrom");     //判断命题真假并输出结果
    }
    return 0;
}

bool Judge_char(const char *p)
{
    register int i = 0;      //计数变量初始化
    int len = strlen(p); //使用STRLEN函数取字符串数组的字符位数

    //注意此处STRLEN与SIZEOF的使用方法区别,后者返回参数的所占空间大小并包含空字符'\0'大小
    //在STRLEN原型中传入的参数是const指针而不是*p对象

    for (i = 0; i <= len; i++)
    {
        if (p[i] == p[len - 1])
        {
            len--; //若首尾两个字符等值,分别向字符串中心移动一位,并判断
        }
        else
        return false;
    }

    return true;
}

//情况2.判断数字回文
//利用数字的数值方法进行回文判断


#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

//此方法可以直接嵌入main函数中,不需要声明自定义函数
int main(int argc, char *argv[])
{

    printf("Please enter the number to judge:\n");

    int Inp;   //将INP作为一个保存初始变量的整型,用于循环后的判断
    scanf("%d", &Inp);      //将STDIN格式化传入INP中,举个例子Inp = 1234

    int sum  = 0;    
    int Calcul;
    Calcul = Inp;   //声明另一个CALCUL变量并将初始值赋给它,其在循环中将会用以判断并发生改变

    while(Calcul != false)
    {
        sum = sum * 10 + Calcul % 10;//第一次等式为sum=0*10+1234%10(其实值就是4)=4,
                    //第二次等式为sum=4*10+123%10(其实值为3)=43,第三次等式为sum=43*10+12%10=432
                   //第四次sum=432*10+1%10(其实为1)=4321
        Calcul /= 10;
//第一次等式为Calcul=1234/10=123第二次Calcul=123/10=12第三次Calcul=12/10=1,第四次Calcul=1/10=0;
    }

    if (sum == Inp)
    {
        printf("this is a palindrome");
    }

    else{printf("this is not a palindrome");
    }

    return 0;
}

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134949.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月6日 上午6:16
下一篇 2022年6月6日 上午6:16


相关推荐

  • pycharm中安装第三方库出现错误_pycharm常用第三方库

    pycharm中安装第三方库出现错误_pycharm常用第三方库我在命令行窗口用pipinstall库名的时候,ModuleNotFoundError:Nomodulenamed‘pip._internal.cli.main’这是在pycharm里报的错Traceback(mostrecentcalllast):File“f:\python\lib\runpy.py”,line193,in_run_module_as_main“main”,mod_spec)File“f:\python\lib\ru

    2022年8月26日
    7
  • sftp与ssh端口分离_设置服务器端口监听

    sftp与ssh端口分离_设置服务器端口监听sftp,是ssh的功能之一,也就是说是使用SSH协议来传输文件的。OS系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的。具体操作(本验证在RedHatLinux7.9上进行):一、复制SSH相关文件,作为sftp的配置文件1、拷贝/usr/lib/systemd/sys

    2025年11月14日
    4
  • mysql 数据库索引b+树深度问题

    mysql 数据库索引b+树深度问题常见面试题 mysql 数据库一颗 b 数据深度大概是多少 这要从 b 树的结构和数据库索引大小去分析问题 索引字段占内存大小 指针占内存大小 6 字节 6Byte 或者 6B 1 先看看 b 树结构下面看一颗树第一行中 1 320 为索引数据排序后的数据范围 1 30 320 32 对应的是页指针 指向下一页 b 树非叶子节点存放的都是 key nest 指针 叶子节点存放数据 在 mysql 索引 b 树中 非叶子节点键值数 子节点数 2 计算在 mysql 索引中索引页默认大小 16kS

    2026年3月18日
    1
  • 【Cutout】《Improved Regularization of Convolutional Neural Networks with Cutout》[通俗易懂]

    【Cutout】《Improved Regularization of Convolutional Neural Networks with Cutout》[通俗易懂]arXiv-2017随着深度学习技术的发展,CNN在很多计算机视觉任务中崭露头角,但increasedrepresentationalpoweralsocomesincreasedprobabilityofoverfitting,leadingtopoorgeneralization.为提升模型的泛化性能,模拟objectocclusion,作者提出了Cutout数据增强的方法——randomlymaskingoutsquareregionsofinput

    2026年3月4日
    4
  • PHP如何解决网站大流量与高并发的问题(四)「建议收藏」

    PHP如何解决网站大流量与高并发的问题(四)

    2022年2月9日
    45
  • 京东创始人是刘强东和谁_日本软银最大股东是谁

    京东创始人是刘强东和谁_日本软银最大股东是谁京东可以说是众所周知的一个购物平台,京东的自营可以说是给人们提供了很多方便性和可靠性。创始人刘强东靠着自己坚韧的毅力,以及卓越的非凡见识,一步一步地把京东做到了最强。可以说也是不容易啊,其中流下的辛

    2022年8月1日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号