题目说明
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121 输出:true 示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
进阶:你能不将整数转为字符串来解决这个问题吗?
解题思路一
- 首先想到的就是将整数转为字符串来解决,利用x.toString()方法
- 要先判断整数的正负,如果是负数,则直接返回false,如果是正数,在进行下一步判断。
- 判断是正数的先运用x.toString()方法,将整数转换成字符串,遍历字符串的前半部分,和后半部分对应位置作比较,如果对应位置的有一项不相等,就返回false
- 遍历完成后对应位置没有不相等的则返回true。
代码实现
var isPalindrome = function(x) {
if(x >= 0) {
let nums = x.toString();
for(let i = 0;i < nums.length/2;i++){
if(nums[i] !== nums[nums.length - i -1]){
return false;
}
}
return true;
}else{
return false;
}
}
解题思路二
- 翻转字符串:先将数值型转为字符串型,再拆分为单字符数组,然后翻转数组,最后将数组拼接成字符串
- 将原字符串和翻转后的字符串进行比较即可
代码实现
var isPalindrome = function(x) {
let nums = x.toString().split('').reverse().join('')
if(x.toString() === nums){
return true;
}else{
return false;
}