Leetcode- 最长公共前缀
来源:     阅读:535
云上智慧
发布于 2020-04-24 15:48
查看主页

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

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

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

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

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
一个面试官对JVM面试问题的分析
入门TypeScript学习总结(一)
idea整合spring boot+spring mvc+mybatis框架
《吊打面试官》系列-缓存雪崩、击穿、穿透
微信小程序五分钟申请教程!
首页
搜索
订单
购物车
我的