最长公共前缀
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情。
14. 最长公共前缀
算题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: strs = ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
解析
最长公共前缀指的是在所有字符串中从第一个字符开始,找到最长的公共字符串。那么可以理解为,实际上就是求所有字符串中从第一个字符开始,相同的子字符串。
思路
非常简单的一个思路,即判断从第一个字符串开始,最长的相等字符串。使用公共下标0开始,开始遍历每一个字符串,并且判断是否相等,直至出现不等时,那么前面相等的内容即为最长公公前缀。
注意: 遍历最大长度为最短字符串长度
图解
通过一张动图来了解一下实现求的最长公公前缀的过程。
最终 Res 即为最长公共前缀
代码
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function (strs) {
let res = '' // 结果
let min = Math.min(...strs.map(item => item.length)) // 最短字符串长度
for (let index = 0; index < min; index++) {
let char = strs[0][index] // 公共字符
if (strs.every(item => item[index] === char)) { // 利用js api 判断当前字符是否为公共字符
res += char
} else {
break
}
}
return res
};
最后附上提交结果:
该类型的题目表叫简单,过程不需要过多赘述。