# 14.最长公共前缀

TIP

标签: 数组

编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 "",

示例1:

输入:strs = ["flower","flow","flight"]
输出:"fl"
1
2

示例2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀.
1
2
3

题解:

  • 1 首先进行判空处理,因为题目中明确的说明了如果找不到公共前缀则返回空字符串
  • 2 我们假定第一个数组中的第一个字符串就是公共前缀。
  • 3 从数组的第二项开始循环,和前缀字符串进行比较,当我们发现,前缀不相同的时候,对前缀进行处理,举个例子,flow 判断 flower 是不是前缀,发现并不是的,截取flower 变成 flowe,接着截取 变成 flow 发现 这个符合,此时公共前缀已经被更新成了 flow。紧着着,开始循环第三个元素,flight 使用startsWith 发现 flow 也不是前缀,继续截取 pre 变成 flo,发现还不是,继续截取 变成 fl,此时满足条件。
  • 4 条件执行完毕之后,返回 公共前缀。
/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function (strs) {
  if (strs === null || strs.length === 0) {
    return ""
  }
  let pre = strs[0]

  for (let i = 1; i < strs.length; i++) {
    while (!strs[i].startsWith(pre)) {
      pre = pre.substring(0, pre.length - 1)
    }
  }
  return pre
};
···
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
最后更新时间: 12/6/2022, 4:37:18 PM