q7_整数反转

1

package 数字操作.q7_整数反转.f1;
/**
 * 转成String o(n) 捕获异常判断是否溢出
 */
public class Solution {
    public int reverse(int x) {
        String s = String.valueOf(x);
        String rs = "";
        boolean f = false;
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == '-') {
                f = true;
            } else {
                rs += s.charAt(i);
            }
        }
        try {
            return f ? Integer.parseInt(rs) * (-1) : Integer.parseInt(rs);
        } catch (Exception e) {
            return 0;
        }
    }
    public static void main(String[] args) {
        System.out.println(new Solution().reverse(1234));
    }
}

2

package 数字操作.q7_整数反转.f2;
/**
 * 求余(判断是否溢出有多种方式) o(log(n))
 */
public class Solution {
    public int reverse(int x) {
        int rs = 0;
        while (true) {
            int y = x % 10;
            x = x / 10;
            if (rs * 10 / 10 != rs) {
                return 0;
            }
            rs = rs * 10 + y;
            if (x == 0) {
                break;
            }
        }
        return rs;
    }
}