首页 > 试题广场 >

最长公共前缀

[编程题]最长公共前缀
  • 热度指数:159173 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

数据范围:
进阶:空间复杂度 O(1),时间复杂度 O(n*len)
示例1

输入

["abca","abc","abca","abc","abcc"]

输出

"abc"
示例2

输入

["abc"]

输出

"abc"
/**
  * 
  * @param strs string字符串一维数组 
  * @return string字符串
  */
function longestCommonPrefix( strs ) {
    // write code here
    if (!strs || strs.length === 0) return ''
    let colLength = strs[0].length
    let commonStr = strs[0]
    for(let col=0; col<colLength;col++) {
        let char = commonStr[col]
        for(let row=1; row<strs.length; row++) {
            if (strs[row].length == col || char != strs[row][col] ) {
                // 字符串长度 = 列下标,字符串短,结束遍历
                return commonStr.slice(0, col)
            }
        }
    }
    return commonStr
}
module.exports = {
    longestCommonPrefix : longestCommonPrefix
};

发表于 2023-02-27 11:34:43 回复(0)
function longestCommonPrefix( strs ) {
    if(strs.length === 1) return strs[0]
    if(!strs.length || !strs[0].length) return ''
    let res = ''
    let str0 = strs[0]
    for(let i = 0;i<str0.length;i++){
        for(let j =1;j<strs.length;j++){
            if(!strs[j].includes(res + str0.charAt(i))){
                return res
            }
        }
        res = res + str0.charAt(i)
    }
    return res
}

发表于 2022-11-07 21:43:46 回复(0)
function longestCommonPrefix(strs) {
  // write code here
  if (!strs || strs.length == 0) return "";
  let firstStr = strs[0];
  const firstLen = firstStr.length;
  for (let i = 0; i < firstLen; i++) {
    let char = firstStr[i];
    for (let j = 1; j < strs.length; j++) {
      if (i == strs[j].length || char != strs[j][i]) {
        return firstStr.substring(0, i);
      }
    }
  }
  return firstStr;
}

发表于 2022-10-20 16:33:47 回复(0)
function longestCommonPrefix(strs) {

    strs = strs.sort()
    var str1 = strs[0]
    var str2 = strs[strs.length - 1]

    var index = 0
    var str = ""
    if (strs.length == 0) {
        return str 
    } else if (str2.startsWith(str1)) {
        return str1
    } 

    while (true) {
        if (str1[index] === str2[index]) {
            str += str1[index]
            index++         
        }else {
            break
        }
    }
    return str

}

发表于 2021-09-05 14:17:54 回复(0)