一、题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
· 例如,121 是回文,而 123 不是。
二、解题思路过程
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
// 0是回文数
if(x==0){
return true;
};
// 负数和最后一位为0的都不是回文数
if(x<0||x%10==0){
return false;
};
var n=x,m,s=0;
// 利用循环,将n反过来,并赋值给s
while(n>0){
m=n%10;
n=parseInt(n/10);
s=s*10+m;
};
// 判断x和s是否相等
return s==x;
};
三、复杂度分析
时间复杂度:,对于每次迭代,我们会将输入除以 10,因此时间复杂度为 O(logn)。
空间复杂度:。我们只需要常数空间存放若干变量。
四、进阶思路过程
你能不将整数转为字符串来解决这个问题吗?
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
// 将x转换为字符串形式
var tempStr = ''+x;
// 将字符串依次执行,拆分、反转、拼串操作,并判断是否与原字符串相等
return tempStr.split("").reverse().join('')===tempStr?true:false;
};
五、题目来源
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。