回文数
题目
判断一个数字是否为回文数.
提示:
-2³¹ <= x <= 2³¹ - 1
示例
输入: x = 121
输出: true
输入: x = -121
输出: false
解释: 从左向右读, 为 -121. 从右向左读, 为 121-. 因此它不是一个回文数.
输入: x = 10
输出: false
解释: 从右向左读, 为 01. 因此它不是一个回文数.
题解
跟第 7. 整数反转 题如出一辙, 都是使用取模逆排法, 即通过把数字看成栈, 来将它反转. 前提可以做几个边界判断:
- 负数一定不是回文数
0 - 9
一定是回文数10
的倍数一定不是回文数(除了0
)
- JavaScript
- Rust
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function (x) {
if (x < 0) return false
if (x < 10) return true
if (x % 10 === 0) return false
let n = 0,
y = x
while (x) {
// 取模逆排法
n = n * 10 + (x % 10)
x = (x / 10) | 0
}
return n === y
}
pub fn is_palindrome(x: i32) -> bool {
if (x < 0) {
return false;
}
if (x < 10) {
return true;
}
if (x % 10 == 0) {
return false;
}
let y = x;
let mut x = x;
let mut n = 0;
while x != 0 {
n = n * 10 + (x % 10);
x /= 10;
}
y == n
}