
?橫向掃描?時間復雜度?O(m * n),空間復雜度O(1)
/*** @param {string[]} strs* @return {string}*/
var longestCommonPrefix = function(strs) {// 先把第一個字符串拿出來let str = strs[0]// 用 startsWith 檢查數組中每個字符串是否以當前字符串為前綴while(!strs.every(item=>item.startsWith(str))){// 如果不是的話就將當前字符串的末尾字符扔掉str = str.slice(0,str.length-1)}return str ===''?'':str
};
?縱向掃描?時間復雜度?O(m * n),空間復雜度O(1)
/*** @param {string[]} strs* @return {string}*/
var longestCommonPrefix = function(strs) {let prefix = ''// 先把第一個字符串拿出來let str = strs[0]// 外層循環先從第一個字符串的第一個字符開始for(let i=0; i<= str.length; i++){let char = str[i]if (strs.length === 0) {return '';} if(strs.length==1){return strs[0]}// 內層循環要從當前字符串的下一個字符串進行比對for(let j=1; j<= strs.length-1; j++){// 如果下一個字符串的第i個字符不等于當前字符串的第i個字符// 或者當前字符串的長度大于下一個字符串的長度則終止循環if(strs[j][i] !== char || i >= strs[j].length){return prefix}}// 符合條件的字符和當前字符拼接prefix += char}return prefix
};