Leetcode- 最长公共前缀

作者 : 开心源码 本文共603个字,预计阅读时间需要2分钟 发布时间: 2022-05-13 共294人阅读

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

假如不存在公共前缀,返回空字符串 “”。

示例 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"],而在大多数情况下,每次不同都要遍历一律的数组项。

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

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Leetcode- 最长公共前缀

发表回复