【LeetCode刷题 不知道能坚持几天 orz...】Day001 14. 最长公共前缀

406 阅读1分钟

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

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

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

示例 1:

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

示例 2:

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

提示:

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

思路:首先想到的是暴力破解,取strs第一个元素作为公共前缀遍历字符,后续元素相应位置上的元素相等则继续,不等则返回前一次公共前缀,代码:

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    if (strs.length <= 1) return strs[0]
    if (strs.includes('')) return ''
    let [comonPrefix, ...restStr] = strs
    let r = ''
    for (let i in comonPrefix) {
        const t = comonPrefix[i]
        for (let j in restStr) {
            const jt = restStr[j][i]
            if (t !== jt) {
                return r
            }
            if (j == restStr.length - 1) {
                r += t
            }
        }
    }
    return r
};

竟然通过了!

屏幕截图 2021-07-27 011843.png

用Map或者正则应该还有优化空间,时间复杂度o(n²),空间复杂度o(n),先到这吧,好困好困睡了睡了