leetcode的每日一题更新( Reverse Integer)

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;
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容