【刷题打卡】14. 最长公共前缀

86 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

14. 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)

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

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

 

示例 1:

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

示例 2:

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

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

二、思路分析:

  1. 先排除长度为 0 和 1 的情况。
  2. 对数组进行排序,sort 用默认排序,或使用 strs.sort((a, b) => a > b? 1: -1) 方法排序。
  3. 排序好的数组,获取数组头和尾两个数据,获取最短的字符串长度做为遍历次数。
  4. 遍历获取相同前缀字符串。

三、AC 代码:

var longestCommonPrefix = function (strs) {
    if (strs.length === 0) return ''
    else if (strs.length === 1) return strs[0]

    strs.sort()

    let start = strs[0],
        end = strs[strs.length - 1],
        len = start.length < end.length ? start.length : start.length,
        result = ''
    for(let i = 0; i < len; i++) {
        if (start[i] !== end[i]) break
        result += start[i]
    }
    return result
};

四、总结:

虽然是个简单题,但是官方给了4个答案,加上题解区,各种大佬的解法都很厉害,继续学习~

范文参考:

14. 最长公共前缀 题解 - 力扣(LeetCode) (leetcode-cn.com)

画解算法:14. 最长公共前缀 - 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)

JavaScript 最长公共前缀 - 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)