美文网首页优美编程
Leetcode- 最长公共前缀

Leetcode- 最长公共前缀

作者: 小遁哥 | 来源:发表于2020-01-17 15:02 被阅读0次

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

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

示例 1:

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

示例 2:

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

1. 解法

var longestCommonPrefix = function(strs) {
  let prefix = "";
  function able(index) {
    let char = strs[0][index] || "";
    let isDifference = strs.some(item => {
      let isSame = item[index] === char;
      return !isSame;
    });

    if (!isDifference) {
      prefix += char;
      able(++index);
    }
  }
  if (strs.length > 0) {
    able(0);
  }

  return prefix;
};

从短到长

从一个字符逐渐累计,计算出最终的公共前缀,这样能够再一次遍历中发现不是公共字符时及时停止,退出递归。

从长到短

看到一种直接拿数组第一项去比较的,发现不匹配则移除最后一个字符,直到所有的数组项都包含,或者返回空字符串。

这种解法只在特定的情况下要好于第一种,比如["flow","flowe","flowed"],而在大多数情况下,每次不同都要遍历全部的数组项。

极端的情况下,没有公共前缀就十分尴尬了。

相关文章

  • Leetcode- 最长公共前缀

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

  • leetcode-最长公共前缀

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

  • LeetCode 每日一题 [19] 最长公共前缀

    LeetCode 最长公共前缀 [简单] 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回...

  • 14. 最长公共前缀

    20180923-摘抄自14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,...

  • 5,最长公共前缀/数组与字符串

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

  • Swift 最长公共前缀 - LeetCode

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

  • leetcode探索之旅(14)

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

  • Leetcode 14 最长公共前缀

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

  • LeetCodeSwift 14.Longest Common

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

  • [day4] [LeetCode] [title14,122]

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

网友评论

    本文标题:Leetcode- 最长公共前缀

    本文链接:https://www.haomeiwen.com/subject/vgiczctx.html