最近在刷算法题,把遇到的问题记录一下,算法小白,不喜勿喷哈。
题目
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121是回文,而123不是。
思路
看x是不是回文数,回文数的规则是先从后往前把x的每一位拿出来,用这个技巧生成一个数字y,如果y和x相等,则说明x是回文数,那怎么才能拿到x的每一位呢?
解法:可以使用对10取余数的方法可以得到x的每一位。然后再对x除以10,依次得到从后往前的数,然后再取余得到倒数第2个数。依次类推,得到从后往前的所有的数。然后再用y= y*10 + last_num得到最终的数。代码如下:
let isPalindrome = function (x) {
if (x < 0) {
return false
}
let y = 0
let temp = x
while (temp > 0) {
let last_num = temp % 10
temp = Math.floor(temp / 10)
y = y * 10 + last_num
}
return y === x
}
console.log(isPalindrome(121))