# 题目
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例:
输入:x = -121 | |
输出:false | |
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 |
# 自己解题
略一思考,可以把数字转成字符串,从中间一分为二,再把右边的字符串倒序排列一下,对比即可
function isPalindrome(x: number): boolean { | |
const str = x.toString(); | |
if(str.length == 1) return true; | |
const l = Math.floor(str.length/2); | |
return str.slice(0,l) == str.slice(-l).split("").reverse().join(""); | |
}; |
提交测试,均测试通过,执行用时: 156 ms, 击败了 52% 的人,性能尚可.
# 学习解法
看了网友的一些解法,分享一个最简单的,也是我没有想到的,直接把数字转字符串进行返序对比即可
function isPalindrome(x: number): boolean { | |
if(x < 0) return false; | |
if(x < 10) return true; | |
return Number(x.toString().split("").reverse().join("")) === x; | |
}; |
执行用时: 148 ms, 略快一点