题解 | #整数反转#

整数反转

http://www.nowcoder.com/practice/6d366d8d3d5941729c5d3fdab55e02d1

C++解题:
1.首先确定如何对整数反转?我们可以先获取这个整数的每一位的数字,然后进行反序存储:例如100,这个数字只有三位数,分别是个位、十位、百位,所以我们可以先获取到个位、十位、百位上的数字,然后将个位上的数字放到百位上(即将原本整数的各位上的数字乘以100即可),而百位上的数字则放到个位上,十位上的数字不变。
2.定义一个long型整数res存储整数反转后的结果,注意:题目要求不能用long long型,但是long代表的是long int型,即长整型,所以可以使用;并且初始化res=0;由于不知道整数的位数,所以使用循环,循环条件是整数大于0;通过来获取整数的最后一位的数字并赋值给a;每次获取后,将整数除以10,并且res也要乘以10再加上求得的数字a。
3.分类思考:1.整数大于0和小于0;2.整数是否超过2^31-1或者小于-2^31,如果是,则直接返回0;
以下是我的代码,有改进的地方或者好的建议请指出,我将积极改进:
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型 
     * @return int整型
     */
    int reverse(int num) {
        long res = 0;
        if(num>0){
            while(num>0){
                int a = num % 10;
                num /= 10;
                if(a!=0) res = res * 10 + a;
            }
            if(res>2147483647)return 0;
            return res;
        }
            num = -num;
             while(num>0){
                int a = num % 10;
                num /= 10;
                if(a!=0)res = res * 10 + a;
            }
        if(res>2147483647)return 0;
        return -res;
    }
};
全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务