JS 如何判断整数是否是回文数?
2023-10-09 02:29:26
在计算机程序中,经常需要判断一个整数是否是回文数,即正反读都一样的数字,比如1221、12321等。本文将提供两种判断回文数的 JavaScript 算法,一种是将整数转换为字符串并利用 JavaScript 的 split() 方法,另一种是直接对整数进行计算。
1. 将整数转换为字符串并利用 JavaScript 的 split() 方法
function isPalindrome(x) {
if (x < 0) {
return false;
}
let str = x.toString();
let reversedStr = str.split("").reverse().join("");
return str === reversedStr;
}
在这个函数中,首先判断输入的整数 x 是否是负数,如果是则返回 false,因为负数不会是回文数。然后将整数 x 转换为字符串 str,再用 split() 方法将字符串分割成数组,然后使用 reverse() 方法将数组倒序,最后用 join() 方法将数组重新组合成字符串 reversedStr。最后比较 str 和 reversedStr 是否相等,如果相等则返回 true,否则返回 false。
2. 直接对整数进行计算
function isPalindrome(x) {
if (x < 0 || (x % 10 === 0 && x !== 0)) {
return false;
}
let reversed = 0;
while (x > reversed) {
reversed = reversed * 10 + x % 10;
x = Math.floor(x / 10);
}
return x === reversed || x === Math.floor(reversed / 10);
}
在这个函数中,首先判断输入的整数 x 是否是负数或以 0 结尾(但不包括 0 本身),如果是则返回 false,因为负数和以 0 结尾的数都不会是回文数。
然后定义一个变量 reversed 来存储反转后的整数,并初始化为 0。然后进入一个 while 循环,只要 x 大于 reversed,就将 x 最右边的数字取出并乘以 10 加到 reversed 中,然后将 x 除以 10,去除最右边的数字。
循环结束后,比较 x 和 reversed 是否相等,或者 x 是否等于 reversed 除以 10 后的结果。如果相等则返回 true,否则返回 false。
这两种算法都可以用来判断一个整数是否是回文数,第一种方法更简单,但需要将整数转换为字符串,第二种方法更直接,但需要更多的数学计算。