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) };