Palindrome Number
问题简介:判断输入数字是否是回文,不是返回0,负数返回0
举例:
1:
输入: 121
输出: true
2:
输入: -121
输出: false
解释: 回文为121-,所以负数都不符合
3:
输入: 10
输出: false
解释: 倒序为01,不符合要求
解法一:这道题比较简单,先判断一下,负数返回0,正数可以通过转换为字符串,通过方法反转,再比较两字符串
class Solution {
public boolean isPalindrome(int x) {
if(x < 0)return false;
String change = String.valueOf(x);
String result = new StringBuilder(change).reverse().toString();
if(change.equals(result))return true;
else return false;
}
}
解法二:Revert half of the number
将一个数字分为前后两部分,通过判断数字的后半段,与前半段比较是否符合回文条件,例如,如果输入是1221,如果我们可以将数字“1221”的后半部分从“21”变为“12”,即满足回文条件.
对于1221,做1221%10,得到最后一位数1,得到第二位到最后一位数,我们需要从1221删除最后一位数,我们可以将它除以10,1221 / 10 = 122.然后我们可以通过模数10,122%10 = 2再次得到最后一位数,如果我们将最后一位数乘以10并加上第二位数,1 * 10 + 2 = 12,它给出我们想要的转换的数字
if(x<0)return false;
int tmp = x;
int reverseN = 0;
int reminder = 0;
while (tmp != 0) {
reminder = tmp % 10;
reverseN = reverseN * 10 + reminder;
tmp /= 10;
}
return x == reverseN;
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海