funciton longestCommonPrefix(strs) { //首先判断字符串数组是否为空 if(strs.length == 0) { return "" } //将strs[0]作为初始值来进行比较 let initStr = strs[0] for(let i = 1; i < strs.length; i++){ //设置一个 j 来记录相等的字符串数 let j = 0 for(; j < initStr.length && j < strs[i].length; j++) { if(initStr[j] !== strs[i][j]) { break } } initStr = initStr.substr(0,j) //如果 initStr = "" 则说明没有相同的字符串 if(initStr == "") { return initStr } } return initStr}
//归并法/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = function(strs) { if (strs === null || strs.length === 0) return ""; return lCPrefixRec(strs)};// 若分裂后的两个数组长度不为 1,则继续分裂// 直到分裂后的数组长度都为 1,// 然后比较获取最长公共前缀function lCPrefixRec(arr) { let length = arr.length if(length === 1) { return arr[0] } let mid = Math.floor(length / 2), left = arr.slice(0, mid), right = arr.slice(mid, length) return lCPrefixTwo(lCPrefixRec(left), lCPrefixRec(right))}// 求 str1 与 str2 的最长公共前缀function lCPrefixTwo(str1, str2) { let j = 0 for(; j < str1.length && j < str2.length; j++) { if(str1.charAt(j) !== str2.charAt(j)) { break } } return str1.substring(0, j)}