Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
菜鸟就要从第二题继续
一、题目描述:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1:
输入:x = 121 输出:true 示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/pa… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思路分析:
直观直接使用字符串for循环对比,使用x.toString()或者String(x)都行
进一步直接用已有方法一行代码也可以实现对应功能
如果不用字符串,则要进行取余操作,参考官方视频,首先进行负数等特殊情况判断,其次要注意溢出问题,所以只转换一半即可
三、AC 代码:
第一版
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
let y=String(x)
let n=y.length
for(let i=0;i<n/2;i++){
if(y[i]!=y[n-1-i]){
return false
}
}
return true
};
第二版
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
return x.toString() == x.toString().split('').reverse().join('')
};
第三版
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if(x < 0 || (x % 10 == 0 && x!= 0)) return false
let temp = 0, s = x
while(s>temp){
temp = temp * 10 + s % 10
s = Math.floor(s/10)
}
return s === temp || s === Math.floor(temp / 10);
};
绳锯木断