- 描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
输入: 121 输出: true 输入: -121输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10 输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
- 思考
与第二题很类似,比二题要简单一些,因为负数不是回文数,所以只用考虑整数
- 代码
public static boolean isPalindrome(int x) {
int m = x;
int n = 0;
while (x >= 0) {
int k = x % 10;
n = n * 10 + k;
x = x / 10;
}
return n == m;
}
- 进阶
用字符串的方式去判断,因为有可能数字很大,比如 int long 都会溢出的情况
- 思考
字符串首尾对比就行,如果有偶数位那么头尾两边均分,如果奇数位,以中心对齐,只要出现不一样就不是回文数,这样,遍历一次就行
- 代码
public static boolean isPalindrome(int x) {
String m = x + "";
String[] k = m.split("");
for (int i = 0; i <= k.length / 2; i++) {
if (!k[i].equals(k[k.length - 1 - i])) {
return false;
}
}
return true;
}
虽然能通过,但是效率比较低