题目:回文数(LeetCode 回文数)
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
说明:
- -2^31 <= x <= 2^31-1
解题思路
解法一:将数字转成字符串,判断字符是否是具有回文性质;
解法二:将数字颠倒(回文),判断是否和原数字相等。
代码
解法一:
public class Lc_9_回文数 {
public boolean isPalindrome(int x) {
if (x < 0) {
//负数不是回文字
return false;
}
String str = String.valueOf(x);
int index = 0;
while (index < str.length() / 2) {
//前后指针判断是否是回文字
if (str.charAt(index) != str.charAt(str.length() - index - 1)) {
return false;
}
index++;
}
return true;
}
}
解法二:
public class Lc_9_回文数 {
public boolean isPalindrome(int x) {
if (x < 0) {
//负数不是回文字
return false;
}
//palindromeRes记录回文后结果,temp用来代替x进行操作,x需要保留,因为最后要进行比较
int palindromeRes = 0, temp = x;
while (temp > 0) {
//回文数每次增加一位,原来的数都要进位(乘以10),把新增加的数字放在最后
palindromeRes = palindromeRes * 10 + temp % 10;
//原来数字要去除最后一位数
temp = temp / 10;
}
return palindromeRes == x;
}
}
结语
共同成长,共同进步,欢迎交流。