leetcode第九题回文数用C语言讲解给小白

加油啊兄嘚

我们先来分析题目,把所有的情况都想一遍。x如果是0~9,那他直接就是回文数;x如果是负数,因为负号的存在,那他怎么也不可能是回文数;x如果>9,就需要我们进一步分析了,这也是本段代码的核心所在……

这个分析是大脑风暴的必须过程,任何一个算法题目都需要认真思考后再落笔。

整体代码框架如下哈:

输入一个x:
if () //判断输入的x是否是符合我们规定的整数,不要带小数点,也不要是越界的超大数
{
    if(x < 0{
    	return false; //如果是负数直接返回,不用进一步判断
    }
    else if ( 0 <= x <= 9)
    {
    	return true; //如果是0~9直接返回,不用进一步判断
    }
    else
    {
    	//核心代码:
    }
}
else
{
    //输出:您的输入有误!程序结束。
}

核心代码如下:

//核心代码
int result = 0;
int a = 0;
int box = x; //box变量用于暂存初始x值
while (x > 0){
	a = x % 10; //模运算取得末尾数字
	result = a + result * 10; //关键:末尾数字a+上一次循环结果result再乘10组成新的数,每次循环中刷新一次result
	x = x / 10;  //在下一次循环之前赶紧把本次x的末尾数去掉,每次进入循环的就是一个崭新的x
}
return box == temp;

合并后:

//我们把上面的合并后:
if () //判断输入的x是否是符合我们规定的整数,不要带小数点,也不要是越界的超大数
{
    if(x < 0{
    	return false; 
    }
    else
    {
        int result = 0;
        int box = x; //把x先赋值给box用于最终判断
		while (x > 0){ //因为x每轮循环都在不断变小、变小,直至最后=0,0的时候不满足该条件就跳出循环了
			result = x % 10 + result * 10; 
			x = x / 10; 
		}
		return box == result; //result每轮循环都在变,最终会变成倒序数
    }
}
else
{
    //输出:您的输入有误!程序结束。
}

ps.本篇文章只针对特定0基础小白同学,如有错误还请评论区指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值