力扣9.回文数(c语言)

今天给大家带来的思路是 反转数字在判断

  假设我们输入1221   我们只需要翻转一半  翻转后面的21就可以 得到12 12=12所以他是回文数

1.如何翻转数字

我们把数字x%10拿到最后一位 在把数字/10拿把最后一位移除

例如1221 先%10=1,在/10=122;

2.如何知道已经翻转一半

例如1221 我们 先拿到了1 tmp=1,121>1 在拿到 2,tmp=12; 12>21此条件不成立所以就代表已经翻转了一半

除了这个思想我们应该在去处理特殊的数字 比如最后一位等于0 最高位不可能位0 所以他一定不是回文 负数-123 321- 所以负数也一定不是回文数字

接下来我们用1221和121为参考来分析一下思路

看代码

bool isPalindrome(int x){
    if(x<0||x%10==0&&x!=0)//如果是特殊条件直接返回false
    return false;
    int tmp=0;
    while (x > tmp) 
	{                  
		tmp = tmp * 10 + x % 10;
		x /= 10;
	}
    return x == tmp || x == tmp / 10;
}

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值