Leetcode 07 Reverse Integer(数字反转) && 09 Palindrome number(回文判断)

07 数字反转

该题难度不大,主要对输入数字进行取余数并将取出的余数保存一个新的数字之中,然后对原数进行除10操作直到输入数字为0时,唯一需要注意的是,定义新数字是将其类型定义为long,否则当数字本省大于INT_MAX或者INT_MIN的时候会出现越界的情况,然后变成一个随机区域内数字,就无法达到返回0的目的。程序如下:
class Solution {
public:
    int reverse(int x) {
        long result=0;
        while(x!=0){
            result=result*10+x%10;
            x /= 10;
        }
        
       return (result > INT_MAX || result < INT_MIN)? 0 : result;

    }
};
09 回文判断
题目相对于之前的题目来说相当的简洁和08题很像,而我解题之所以跳过08题的原因有如下两点:
一、08题的情况有点多需要再琢磨琢磨,相对08虽然是一个中等难度的题目,但情况过多也造成了它的难度提升。
二、09题和07题有异曲同工之妙,两者解法相似。
为什么说两个解法相似,就需要理解何为回文,所谓回文就是反转数字以后其结果和输入相同,所以其解题大体和07题相同,
在对其加上一个判断语句即可,但有些小的细节需要注意,看下列程序:
class Solution {
public:
    bool isPalindrome(int x) {
         if(x>=INT_MAX||x<=INT_MIN)  //判断是否超过范围
            return false;
        int answer=0,tmp=x;
        while(x!=0){
            answer=answer*10+x%10;  //与07题相同的计算语句
            x/=10;
        }
        if(answer==tmp)
            return true;
        else
            return false;
    }
};
看似没有问题的程序但在某些情况下无法通过测试,主要是因为当输入小于0的时候,该数不可能是一个回文。所以在对x范围进行判断的时候加上x>0条件即可。
if(x>=INT_MAX||x<=INT_MIN)
            return false;
//改为
if(x<0||x>=INT_MAX||x<=INT_MIN)
            return false;
这样就能通过所有测试成功AC。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值