# 14.最长公共前缀
TIP
标签: 数组
编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 "",
示例1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
1
2
2
示例2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀.
1
2
3
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18