Determine whether an integer is a palindrome. Do this without extra space.数组
这是leetcode上的第9题,难度为easy,判断整型数字是否为回文串,须要注意两点:this
这一题与第7题相似,也能够有两种思路:数组法和模十法。因为题目对空间复杂度有要求,因此使用模十法spa
模十法:
把给定的x使用模十法逆序一下,与原x的值比较code
/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { if(x<0) return false; if(x<10) return true; var temp = 0; var org = x;//记录x的初始值 while(x>9){ temp = x%10+temp*10 x = parseInt(x/10) } temp = temp*10 + x return temp == org };
模十改进版:
上面方法将给的x彻底逆序后比较,其实还能够简化一下。好比整数12321
,当上面方法中的while循环进行到当temp=12
,x=123
时,这时就能够判断为回文了,此时temp==parseInt(x/10)
。再好比12344321
,当进行到temp=1234
,x=1234
时也能够判断回文了,此时temp==x
。因此代码能够以下改进:leetcode
/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { //能被10整除的非0整数和负数,返回false if(x<0||(x%10==0&&x!=0)) return false; if(x<10) return true; var temp = 0; while(x>temp){ temp = x%10+temp*10 x = parseInt(x/10) } return (temp == x)||(parseInt(temp/10)==x) };