字符串的公共前缀(14)

69 阅读1分钟

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""

示例 1:

输入: strs = ["flower","flow","flight"]
输出: "fl"

示例 2:

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

解题思路:

  1. 首先判断数组是否为空,如果为空则直接返回空字符串
  2. 然后找到字符串数组中最短的字符串,因为公共前缀的长度不可能超过最短的字符串的长度
  3. 从第一个字符开始遍历最短的字符串,如果当前字符与其他字符串的对应字符都相同,则将该字符加入公共前缀中,否则直接返回当前的公共前缀

代码如下:

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;
};