likes
comments
collection
share

leetcode 最长公共前缀(每日计划)

作者站长头像
站长
· 阅读数 4

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

如果不存在公共前缀,返回空字符串 ""。

示例 1:

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

示例 2:

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

我的算法实现:

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix1 = function (strs) {
  if (strs.length === 0) return "";
  let str = "";
  for (let i = 0; i < strs[0].length; i++) {
    let tempStr = strs[0][i],
      j = 1;
    for (; j < strs.length; j++) {
      if (strs[j][i] !== tempStr) break;
    }
    if (j === strs.length) {
      str += tempStr;
      j = 1;
    } else {
      break;
    }
  }
  return str;
};

我的思路很简单,就是逐个进行比较,如果一个满足就保存起来。随着我做的越多,我暴露的问题也就越多,比如说,每一次我能想到的方法总是只有一种或者两种,而且都是常规思路(基本不含任何数据结构)。下面是官方的解法,方式很多种,每一种都值得学习,我打算这个周以后我要重新温习数据结构和排序。

官方解法:最长公共前缀

其中分治这一块差不多是我的盲区,以后会重点练习。


来源:力扣(LeetCode)