-
Notifications
You must be signed in to change notification settings - Fork 0
/
9. Palindrome Number
38 lines (28 loc) · 1.8 KB
/
9. Palindrome Number
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
27
28
29
30
31
32
33
34
35
36
37
38
给定一个整数 x,如果 x 是回文数,则返回 true,否则返回 false。
回文数是指正着读和反着读都相同的整数。例如,121,1221 是回文数,而123,12321 不是回文数。
该问题的解决方案是,首先检查数字是否为负数或者数字的末位为0且数字不为0,如果是,则该数字不是
回文数。然后,将数字反转,并检查反转后的数字是否与原数字相等。如果原数字有偶数个位数,那么反
转后的数字和原数字应该相等;如果原数字有奇数个位数,那么反转后的数字应该比原数字多一位,去掉
多余的一位后应该和原数字相等。如果上述两种情况都不满足,则该数字不是回文数。最终,返回 true
或 false 表示该数字是否是回文数。
实现该算法的代码可以参考以下的Java代码:
class Solution {
public boolean isPalindrome(int x) {
// 检查数字是否为负数或者数字的末位为0且数字不为0,如果是则不是回文数
if (x < 0 || x % 10 == 0 && x != 0) return false;
// 初始化一个变量 c,用于存储反转后的数字
int c = 0;
// 反转数字
while (x > c) {
c = c * 10 + x % 10;
x = x / 10;
}
// 检查反转后的数字是否与原数字相等,分为两种情况:
// 1. 如果原数字有偶数个位数,那么反转后的数字和原数字应该相等
if (x == c) return true;
// 2. 如果原数字有奇数个位数,那么反转后的数字应该比原数字多一位,去掉多余的一位后应该和原数字相等
if (c / 10 == x) return true;
// 如果上述两种情况都不满足,则不是回文数
return false;
}
}