回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
解题思路
解法一: 1.先将给定数转换为字符串 2.获取字符串的开始索引和结束索引 3.通过while循环判断 当第一和最后一位不相等则不是回文数返回false否则直至循环结束返回true
/**
* 检查给定的整数是否为回文数。
* 如果一个数从左到右读和从右到左读都是一样的,那么这个数就是回文数。
*
* @param {number} x - 要检查的整数。
* @return {boolean} - 如果 x 是回文数则返回 true,否则返回 false。
*/
var isPalindrome = function (x) {
// 将整数转换为字符串
let str = x.toString();
// 获取字符串的长度
let len = str.length;
// 初始化两个指针,一个指向字符串的开头,一个指向字符串的结尾
let i = 0;
let j = len - 1;
// 从字符串的两端向中间遍历
while (i < j) {
// 如果两个指针所指的字符不相等,那么这个字符串就不是回文数
if (str[i] !== str[j]) {
// 返回 false
return false;
}
// 两个指针向中间移动一步
i++;
j--;
}
// 如果遍历完整个字符串都没有发现不相等的字符,那么这个字符串就是回文数
return true;
};
解法二: 1.设置一个和标记 2.将给定值转字符串 3.循环字符串的一半通过字符串的charAt()方法判断开始是否等于结束 不等于返回false否则返回true
var isPalindrome = function(x) {
// 设置一个标记,默认 true
x<0 ? flag = false: flag = true;
// 先将数字转换为字符串
let str = x.toString()
switch(str.lengt) {
case 1:
flag = true
break;
case 2:
str[0] === str[1] ? flag = true:flag = false
break;
default:
for(let i =0; i<str.length/2;i++) {
// charAt() 方法可返回指定位置的字符。
// 判断索引第一个位置的字符等不等于最后一个位置的字符
// 不等于则不是回文数,标记为false
if(str.charAt(i) !== str.charAt(str.length-1-i)) {
flag = false
// 不相等直接退出循环
break;
}
}
break;
return flag
};