javascript初探LeetCode之9.Palindrome Number

題目

Determine whether an integer is a palindrome. Do this without extra space.數組

分析

這是leetcode上的第9題,難度爲easy,判斷整型數字是否爲迴文串,須要注意兩點:this

  • 一、負數都不是迴文
  • 二、小於10的非負整數都是迴文

這一題與第7題相似,也能夠有兩種思路:數組法和模十法。因爲題目對空間複雜度有要求,因此使用模十法spa

js實現

模十法:
把給定的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)
};
相關文章
相關標籤/搜索