刷刷刷,14. Longest Common Prefix

之前刷了这个,不过忘了当初怎么写的了,找了javascript的算法javascript

    var longestCommonPrefix = function (strs) {java

        if (strs.length == 0) return "";算法

        var res = strs[0];数组

        for (var i = 0 ; i < strs.length; i++) {ip

            while (strs[i].indexOf(res) != 0) {string

                res = res.substring(0, res.length - 1);io

                if (res.isnull) return "";function

            }变量

        }遍历

        return res;
    };

java的同样就是换了语言,基本同样

        public String longestCommonPrefix(String[] strs) {
            if(strs.length == 0) return "";

        String com = strs[0];
        for(int i = 0;i < strs.length;i++){
            
            while(strs[i].indexOf(com) != 0){
                com = com.substring(0,com.length() - 1);
                if(com.equals("")) return "";

        }  
    }
    return com;
    }
}

总结:

1.默认数组第一个就是最长前缀,com变量赋值,遍历strs数组。

2.若是不包括,就把com长度减1,知道等于0或者“”

3.当时我没有想明白一个问题,当strs = {"leet","sleet","leets"}时,这个程序会返回“”,可是公共前缀应该是leet啊,想着想着,这个有个“前“字,从开头开始算,而后算法就容易理解了。

相关文章
相关标签/搜索