题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1:
输入: 123
输出: 321
示例2:
输入: -123
输出: -321
示例3:
输入: 120
输出: 21
我的解法:
public int reverse(int x) {if(x>-10 && x<10) {return x;}int y=0;boolean findHead = false;boolean isPositive = x<0?false:true; long temp =0;x= Math.abs(x);while (x >0) {int t = x%10;if(!findHead && t!=0) {findHead = true;}if(findHead) {temp = (long)y*10 + t;if(temp > Integer.MAX_VALUE) {return 0;}y = y*10 + t;}x/=10;}return isPositive?y:-y;}
参考答案解法:
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;}
明显更简洁,并且代码可读性更高。持续精进,加油!