20201218 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int reverse(int x) {
}
思路(错误):看到反转脑袋第一反应是通过string的reverse来处理
public static int reverse(int x) { boolean isless=false; if (x<0) isless=true; StringBuilder s = new StringBuilder(String.valueOf(Math.abs(x))); s.reverse(); s=isless==true?s.insert(0,"-"):s.append(""); System.out.println(s.toString()); return Integer.parseInt( s.toString()); }
int值小时正常 但int值很大溢出报错 int数据范围为-2147483648~2147483647
下面是官方解答
public int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; x /= 10; if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0; if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0; rev = rev * 10 + pop; } return rev; }