LeetCode 14. 最长公共前缀

250 阅读1分钟

解析

解法1

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    let str = ''
    let flag = 0
    //只有一个的时候,就一个前缀
    if(strs.length === 1){
        return strs[0]
    }
    //双层遍历循环
    for(let i= 0;i < strs[0].length;i++){
        for(let j = 1;j < strs.length;j++){
            //当前的串的长度要大于前缀长度,然后是所有串的前缀
            if(strs[j].length >= i && strs[j].startsWith(strs[0].slice(0,i+1))){
                flag ++
            }
        }
        //只要符合标志 = 剩余串的个数  就说明是公共前缀
        if(flag === strs.length -1){
            str = strs[0].slice(0,i+1)
        }
        flag = 0
    }
    return str
};

解法2

var longestCommonPrefix = function(strs) {
    if(strs.length === 0){
        return ""
    }
    let ans = strs[0]
    for(let i = 1;i<strs.length;i++){
        let j = 0
        for(;j < strs[i].length;j++){
            if(ans[j] !== strs[i][j]){
                break
            }
        }
        ans = ans.substr(0,j)
        if(ans === ''){
            return ans
        }
    }
    return ans
};