Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Subscribe to see which companies asked this question
package nine; public class ReverseiInteger { public static int reverseInteger(int n) { boolean flag = false; if (n < 0) { n = -n; flag = true; } String s = n + ""; char[] num = s.toCharArray(); int len = num.length; for (int i = 0; i < len / 2; i++) { char tmp = num[i]; num[i] = num[len - i - 1]; num[len - i - 1] = tmp; } s = new String(num); try { if (flag) { return -Integer.parseInt(s); } return Integer.parseInt(s); } catch (Exception e) { return -1; } } public static int reverseIntegerBetter(int n) { double reverseNum = 0; boolean flag = false; if (n < 0) { n = -n; flag = true; } while (n > 0) { if (reverseNum > Integer.MAX_VALUE) { return 0; } if (n < 10) { reverseNum += n; } else { reverseNum = (reverseNum + (n % 10)) * 10; } n = n / 10; } if (flag) { reverseNum = -reverseNum; } return (int) reverseNum; } public static void main(String[] args) { long start = System.currentTimeMillis(); reverseInteger(-13); long end = System.currentTimeMillis(); System.out.println(end - start); start = System.currentTimeMillis(); System.out.println(reverseIntegerBetter(2147483412)); end = System.currentTimeMillis(); } }
网上的优化版本
public int reverse(int x) { int result = 0; while (x != 0) { int tail = x % 10; int newResult = result * 10 + tail; if ((newResult - tail) / 10 != result) { return 0; } result = newResult; x = x / 10; } return result; }

浙公网安备 33010602011771号