7. Reverse Integer

来源:互联网 发布:软件验收测试报告范文 编辑:程序博客网 时间:2024/05/20 11:47

题目

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

我的解答

public class Solution {    public int reverse(int x) {        int max = Integer.MAX_VALUE;        int min = Integer.MIN_VALUE;        int mark = (x < 0) ? -1 : 1;        if(x == 0)            return 0;        // Math.abs(x),若x是int类型则生成int类型。若x是-2147483648,则必须存成-2147483648L类型,否则会出错。        long temp = Math.abs((long)x);        StringBuilder sb = new StringBuilder();        while(temp != 0){            sb.append(temp % 10);            temp = temp / 10;        }        long res = Long.parseLong(sb.toString()) * mark;        if(res > max || res < min)            res = 0;        return (int)res;    }}
算法分析:效率低下。一定要注意long、int等类型问题。

答案解答(从数学的角度来进行运算,完成操作)

public class Solution {    public int reverse(int x) {        long res = 0L;        while(x != 0){            // 把之前的尾数*10变成高位,把高位取余后加入尾部            res = res * 10 + x % 10;            x = x / 10;            if(res > Integer.MAX_VALUE || res < Integer.MIN_VALUE)                return 0;         }        return (int)res;    }}
算法分析:比我的解答好。从数学角度把低位变成高位、高位变成低位

0 0
原创粉丝点击