美文网首页程序员
javascript初探LeetCode之9.Palindrom

javascript初探LeetCode之9.Palindrom

作者: ThereThere_0d70 | 来源:发表于2017-10-11 16:22 被阅读0次

    题目

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

    分析

    这是leetcode上的第9题,难度为easy,判断整型数字是否为回文串,需要注意两点:

    • 1、负数都不是回文
    • 2、小于10的非负整数都是回文

    这一题与第7题类似,也可以有两种思路:数组法和模十法。由于题目对空间复杂度有要求,所以使用模十法

    js实现

    模十法:
    把给定的x使用模十法逆序一下,与原x的值比较

    /**
     * @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=123,x=12时,这时就可以判断为回文了,此时x==parseInt(temp/10)。再比如12344321,当进行到temp=1234,x=1234时也可以判断回文了,此时temp==x。所以代码可以如下改进:

    /**
     * @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)
    };
    

    相关文章

      网友评论

        本文标题:javascript初探LeetCode之9.Palindrom

        本文链接:https://www.haomeiwen.com/subject/ifvwyxtx.html