【算法】【S】回文数 梦里梦外; 2022-05-15 01:23 132阅读 0赞 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: ## 你能不将整数转为字符串来解决这个问题吗? ## 方法一: 利用字符串比较方法得到结果。 关键在`x[i] === x[length - 1 - i` var isPalindrome = function(x) { x = String(x); let length = x.length; let flag = true; for(let i = 0; i < length ; i++){ //在中点时结束 if(i === length -1 - i){ return flag; } //只要有一个不相等就是false if(x[i] === x[length - 1 - i]){ flag = true; }else{ return flag = false; } } return flag; }; -------------------- 方法二: 利用数学求余数方法得到结果。 关键在`x > temp`,`temp = (temp)*10 + k;` 总体来说,思路更加巧妙。 var isPalindrome1 = function (x) { if(x < 0 || (x % 10 === 0 && x !== 0) ){ return false; } let k = 0; let temp = 0; while (x > temp){ k = x%10; temp = (temp)*10 + k; x = parseInt(x / 10); } return (x === temp || x === parseInt(temp/10)) };
还没有评论,来说两句吧...