本文主要是介绍LeetCode题解:9. 回文数,翻转一半数字,JavaScript,详细注释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原题链接
9. 回文数
解题思路
- 翻转数字
- 利用循环,每次将x右移一位
- 将移出的数字存储到
reversed
的个位中 - 每次存储前,需要将
reversed
左移一位
- 判断结果
- 当原x的长度为偶数,翻转后的结果相等
- 当原x的长度为奇数,reversed一定比翻转后的x多一位,需要将其向右移动一位后再对比
- 处理特殊情况
- x为负数,不是回文数
- 除了0以外的,最后一位为0的数字,必然不是回文数
示例代码
/*** @param {number} x* @return {boolean}*/
var isPalindrome = function(x) {// x为负数,不是回文数if (x < 0) {return false}// 除了0以外的,最后一位为0的数字,必然不是回文数// 如果数字最后一位是0,必然是10的倍数,取余后为0if (x % 10 === 0 && x !== 0) {return false}// 存储反转后的数字let reversed = 0// 翻转x,直到x>reversed,表示翻转结束while (x > reversed) {// 每次翻转时,将reversed*10,表示向左移动一位// 再将x的个位数,填充到reversed的个位reversed = reversed * 10 + (x % 10)// x/10,表示x向右移动一位,并保留整数x = Math.floor(x / 10)}// 翻转后有两种可能性// 1. 当原x的长度为偶数,翻转后的结果相等// 2. 当原x的长度为奇数,reversed一定比翻转后的x多一位,需要将其向右移动一位后再对比return x === reversed || Math.floor(reversed / 10) === x
};
这篇关于LeetCode题解:9. 回文数,翻转一半数字,JavaScript,详细注释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!