判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

题目来源

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/palindrome-number/

示例 1:

输入: 121

输出: true

示例 2:

输入: -121

输出: false

解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10

输出: false

解释: 从右向左读, 为 01 。因此它不是一个回文数。

解题思路

暴力

先将整数反转,反转后在和原数作比较,一样就对,不一样就不对

数组

定义两个指针 i , j , 其中 i 为头指针 , j 为尾指针

代码

暴力破解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public  boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
int reverse = reverse(x, 0);
if (x == reverse) {
return true;
}
return false;
}

public int reverse(int num, int result) {
if (num == 0) {
return result;
}
int res = num / 10;
int single = num % 10;
if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && single > 7)) {
return 0;
}
if (result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && single < -8)) {
return 0;
}
result = result * 10 + single;
return reverse(res, result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public  boolean isPalindrome(int x) {
String value = String.valueOf(x);
char[] chars = value.toCharArray();
if (chars.length <=0){
return false ;
}
if (chars.length <=1){
return true ;
}

int i = 0 , j =chars.length - 1 ;

while (i <= j){
if (chars[++i] != chars[--j]){
return false ;
}
}
return true ;
}