# 【题库练习】09 回文数
题意:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例1:
输入: 121 输出: true
1
2示例2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
1
2
3示例3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
1
2
3
来两个算是投机取巧的法子。。
# 一、转换为字符串比较
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
// 121 -> "121" -> [1, 2, 1] -> [1, 2, 1] -> "121"
let _x = (x + "").split("").reverse().join("");
return _x === x + "";
};
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
提交结果:
Time | Cache |
---|---|
256ms | 45.8MB |
# 二、求余数(来自题解)
这个比较巧妙的是利用余数从后往前重新累加成了一个新数字,只有回文数的取余累加后的新数字等于原数字。。
var isPalindrome = function(x) {
let s = 0, y = 0;
s = x;
while(s >= 1) {
y = y * 10 + s % 10;
s = Math.floor(s / 10);
}
return y === x;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11