📅  最后修改于: 2023-12-03 15:16:33.250000             🧑  作者: Mango
在Java中,我们可以通过一些简单的算法来检查一个整数是否是回文(即正向和反向的数字是相同的),这在许多问题中都很有用,例如判断一个字符串是否是回文。
一个整数是回文,当且仅当将其反转后仍是相同的。因此,我们可以将整数反转,然后将其与原始值进行比较,如果相同则它是回文。
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
} else {
int reversed = 0;
int original = x;
while (original > 0) {
reversed = reversed * 10 + original % 10;
original /= 10;
}
return reversed == x;
}
}
我们也可以将整数转换为字符串,并检查其是否为回文。
public boolean isPalindrome(int x) {
String str = Integer.toString(x);
int i = 0;
int j = str.length() - 1;
while (i < j) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
i++;
j--;
}
return true;
}
如果我们希望在不使用字符串或额外空间的情况下检查一个整数是否是回文,我们可以用数学方法来解决。我们只需要比较数字的左半部分是否等于右半部分,直到我们到达数字的中心。
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
} else {
int reversed = 0;
while (x > reversed) {
reversed = reversed * 10 + x % 10;
x /= 10;
}
return x == reversed || x == reversed / 10;
}
}
以上三种方法都可以用来判断一个整数是否是回文,选择哪一种方法取决于你的需求。