题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
解题思路
- 边界情况处理:如果数组为空,直接返回空字符串。
- 选择基准字符串:为了简化比较过程,我们可以选择数组中的第一个字符串作为公共前缀
- 逐个字符比较:遍历基准字符串的每个字符,并依次与数组中其他字符串的相应位置的字符进行比较。如果发现有不匹配的情况,则将当前字符之前的所有字符作为新的公共前缀。
示例代码(JavaScript)
var longestCommonPrefix = function(strs) {
if (strs.length === 0) return "";
let prefix = strs[0]; // 假设第一个字符串为最长公共前缀
for (let i = 1; i < strs.length; i++) {
let j = 0;
// 当遍历的字符串长度小于当前公共前缀或字符不匹配时停止
while (j < prefix.length && j < strs[i].length && prefix[j] === strs[i][j]) {
j++;
}
// 更新最长公共前缀为当前匹配的前缀
prefix = prefix.substring(0, j);
// 如果最长公共前缀变为空字符串,则直接返回
if (prefix === "") return "";
}
return prefix;
};