题解 | 回文数字

回文数字

http://www.nowcoder.com/practice/35b8166c135448c5a5ba2cff8d430c32

题意分析:

  • 在不使用额外的内存空间的条件下判断一个整数是否是回文数字
  • 如果使用NC57反转数字 的思路,注意溢出的处理
  • 考虑负数的特判

解法一:数学

图片说明

  • 一个直观的算法,就是将所给数字反转之后与原来的数字进行比较,如果相等怎么时回文数(当然要考虑负数的情况)
  • 关于如何反转一个数字串,请参考NC57反转数字

C++参考代码:

class Solution {
public:
    int reverse(int x){
        //用long的原因是避免溢出
        long res = 0;
         //注意细节:这里的终止条件不能是x>0
        while(x!=0){
            //将得到的每一位数字拼成完整的数值
            res = res*10+x%10;
            //获取下一位
            x/=10;
        }
        //对数值范围可能溢出的考虑,利用了自带的INT_MAX与INT_MIN简化判断
        if(res>INT_MAX || res<INT_MIN){
            return 0;
        }else{
            return res;
        }
    }
public:
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
    bool isPalindrome(int x) {
        

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白专属-牛客题解 文章被收录于专栏

专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列

全部评论
不让用字符串
点赞 回复 分享
发布于 2022-01-29 00:42

相关推荐

请看图片
投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
jack_miller:杜:你不用我那你就用我的美赞臣
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
3 1 评论
分享
牛客网
牛客企业服务