Leetcode- 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 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"],而在大多数情况下,每次不同都要遍历全部的数组项。 极端的情况下,没有公共前缀就十分尴尬了。

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):

昵称:
邮箱:
内容: