题目描述
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
样例
Example 1:
Input: 121 Output: true
Example 2:
Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
思路分析
题意即确认数字是否为回文数。
方法一为暴力求解法,直接数字转换为字符串,两边进行比较。
方法二中,rev通过循环,逐步倒序输出数字,x则是正序。
例如,x=12345
循环次数 | rev | x |
1 | 5 | 1234 |
2 | 54 | 123 |
3 | 543 | 12 |
代码
方法一
class Solution {
public static boolean isPalindrome(int x)
{
String str = Integer.toString(x);
for (int i=0; i<str.length()/2; i++)
{
if (str.charAt(i) != str.charAt(str.length()-1-i))
{
return false;
}
}
return true;
}
}
方法二
public boolean isPalindrome(int x) {
if (x<0 || (x!=0 && x%10==0)) return false;
int rev = 0;
while (x>rev){
rev = rev*10 + x%10;
x = x/10;
}
return (x==rev || x==rev/10);//分别判断数字位数为偶数或奇数的情况
}