中间的判断条件为是否溢出
输入: -123
输出: -321
class Solution {
public int reverse(int x) {
int newnumber = 0;
while (x!=0) {
int pop = x % 10;
x/=10;
if (newnumber>Integer.MAX_VALUE/10||(newnumber==Integer.MAX_VALUE/10&&pop>7))return 0;
if (newnumber<Integer.MIN_VALUE/10||(newnumber==Integer.MIN_VALUE/10&&pop<-8))return 0;
newnumber = newnumber*10+pop;
}
return newnumber;
}
}
类似的题还有:回文数的判断(如果不让你用字符串)
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
class Solution {
public boolean isPalindrome(int x) {
if (x<0) return false;
int temp = x;
int rev = 0;
while (x!=0){
int pop = x%10;
x/=10;
if (rev>Integer.MAX_VALUE/10||(rev==Integer.MIN_VALUE/10&&pop>7)) return false;
if (rev<Integer.MIN_VALUE/10||(rev==Integer.MIN_VALUE/10&&pop<-8)) return false;
rev = rev*10 + pop;
}
if (rev==temp){
return true;
}
return false;
}
}
网友评论