美文网首页
leetcode的每日一题更新( Reverse Integer

leetcode的每日一题更新( Reverse Integer

作者: 今天是晴天 | 来源:发表于2017-09-26 10:53 被阅读0次

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321
题目意思:反转一个int,返回的时候如果超过32位则返回0
本来这么简单的题目不想写文章,但是遇到一个测试用例莫名其妙的用加负号和~a+1的办法都不能将其变成正数,想了半天原来是超过int的最大值,将Integer里面的静态成员变量输出一下看到负数的值比正数大一的。只好把int转换成long,再用StringBuilder的字符串反转来做,也可以用循环来做,那样麻烦一点,就是一边除一边乘而已。附上我的代码:

    public int reverse(int x) {
        
        StringBuilder a=null;
        long temp=x;
        if(x>0) {
            a =new StringBuilder(""+temp);
        }else {
            a = new StringBuilder(~temp+1+"");
        }
        a.reverse();//返回时判断是否太大
        long b =Long.parseLong(a.toString());
        if(b>Integer.MAX_VALUE || b<Integer.MIN_VALUE) {
            return 0;
        }else if(temp<0) {
            return -(int)b;
        }else {
            return (int)b;
        }
    }

相关文章

网友评论

      本文标题:leetcode的每日一题更新( Reverse Integer

      本文链接:https://www.haomeiwen.com/subject/iuqsextx.html