【leetcode14題】最長公共前綴

 

編寫一個函數來查找字符串數組中的最長公共前綴。

如果不存在公共前綴,返回空字符串 ""。

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
說明:

所有輸入只包含小寫字母 a-z 。

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    if (strs.length === 0) return "";
    let newArr = strs.sort();
    // 第一個
    let first = newArr[0];
    let last = newArr[strs.length - 1];
    let result = "";
    let resultLen = Math.min(first.length, last.length)
    for (let i = 0; i < resultLen; i++) {
        if (first.charAt(i) === last.charAt(i)) {
            result += first.charAt(i);
        } else {
            break;
        }
    }
    return result;
};
/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
   //最長公共前綴
    if(strs.length <1 ) return "";
    //第一個參數,以他爲標準
    let str0 = strs[0];
    if (str0 === "") return "";
    var str = str0.split('');

    //遍歷元素0
    for (var j = 0; j < str.length; j++) {
        //遍歷後面的
        for (var i = 1; i < strs.length; i++) {
            //如果後面元素i長度不夠執行本次循環,說明元素i完全滿足,直接返回
            if (strs[i].length < j+1) {
                return strs[i];
            }

            if (str[j] == strs[i].charAt(j)) {
                //正常情況,匹配到了
                continue;
            } else {
                //匹配失敗,直接截取返回
                return str0.substring(0, j);
            }
        }
    }
    //元素0遍歷完了,說明第一個元素就是
    return str0;
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章