最长公共前缀(longestCommonPrefix)

最长公共前缀More info: leetcode14

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。
示例 1:

输入:strs = [“flower”,”flow”,”flight”]
输出:”fl”
示例 2:

输入:strs = [“dog”,”racecar”,”car”]
输出:””
解释:输入不存在公共前缀。

提示

  1. 1 <= strs.length <= 200
  2. 0 <= strs[i].length <= 200
  3. strs[i] 仅由小写英文字母组成

解题思路

先将数组进行按每一项字符的长度进行排序,这样可以保证最长的前缀一定再第一项,如果第一项都不满足,那就没有了.

  1. 考虑输入的数组的长度为0, 1的情况;
  2. 将字符串组按长度排序;
  3. 设置公共前缀longestComPre为排序后的第一项(数组中的最短字符串);
  4. 设置当前遍历的下标i;
  5. 利用while循环, 循环条件为i < strs.length;
  6. 不断循环,如果不满足条件就对longestComPre进行调整;
  7. 最终返回longestComPre即可

具体实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length === 0) return ''//边界条件判断
if(strs.length === 1) return strs[0];
let i = 1;
let longestComPre = strs[0]
while(i < strs.length){
if(!strs[i].startsWith(longestComPre)){
// 只要某一项不能满足条件,就不断对longestComPre进行裁剪
longestComPre = longestComPre.substring(0, longestComPre.length - 1);
}else{
++i;
}
}
return longestComPre;
};
// 测试
console.log(longestCommonPrefix(["flower","flow","flight"])); // 输出 "fl"

分析总结

很多时候利用while循环效果更好


最长公共前缀(longestCommonPrefix)
https://zbdev.online/2023/05/10/longestCommonPrefix/
作者
zzb
发布于
2023年5月10日
许可协议