标签:
[Problem]
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
[Analysis]
这题不难,关键是要注意overflow的处理,因为reverse后的数字有可能超出Integer的范围。有两种思路:一种是利用对10取模的运算,每次将最后一位加入结果并将结果乘10;一种是利用Java StringBuilder的reverse函数以及Integer的parse函数直接将数字转换成字符串并倒转然后转换成整数类型,需要注意负数的处理。
[Solution]
public class Solution { public int reverse2(int x) { long result = 0; while (x != 0) { result *= 10; result += x % 10; x /= 10; } if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) { return 0; } else { return (int)result; } } }
public class Solution { public int reverse(int x) { if (x == 0) { return 0; } if (x % 10 == 0) { return reverse(x/10); } try { if (x < 0) { return -reverseAbs(-x); } else { return reverseAbs(x); } } catch (Exception e) { return 0; } } public int reverseAbs(int x) throws Exception{ String str = String.valueOf(x); str = new StringBuilder(str).reverse().toString(); return Integer.parseInt(str); } }
LeetCode #7 Reverse Integer (E)
标签:
原文地址:http://www.cnblogs.com/zhangqieyi/p/4851779.html