编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: strs = ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
解题思路:
- 首先判断数组是否为空,如果为空则直接返回空字符串
- 然后找到字符串数组中最短的字符串,因为公共前缀的长度不可能超过最短的字符串的长度
- 从第一个字符开始遍历最短的字符串,如果当前字符与其他字符串的对应字符都相同,则将该字符加入公共前缀中,否则直接返回当前的公共前缀
代码如下:
const getCommonStr = function (strs) {
if (strs.length === 0) return "";
if (strs.length === 1) return strs[0];
// 看清题目,找的是公共前缀,并不是公共的字符串
let tempStr = strs[0];
for (let i = 1; i < strs.length; i++) {
// 一直循环,如果不是前缀的话,直到是前缀为止
while (strs[i].indexOf(tempStr) !== 0) {
tempStr = tempStr.substring(0, tempStr.length - 1);
if (tempStr == "") return "";
}
}
return tempStr;
};