原题地址:https://leetcode-cn.com/probl...

题目描述

分析题目

对于这道题最直观的感觉就是:

  • 找到第一个字符串 target
  • 进行按列的水平扫描

我的代码如下:

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    if (!strs || !strs.length) {
        return ''
    }
    let target = strs[0]
    for (let i = 0; i < target.length; i++) {
        for (let j = 1; j < strs.length; j++) {
            if (strs[j][i] !== target[i]) {
                return i > 0 ? target.slice(0, i) : ''
            }
        }
    }
    return target
};
  • 时间复杂度:O(s)s = m + n(s就是总的字符串的长度)
  • 空间复杂度:O(1)

当然,这道题还有其他解法,比如二分法、分治法,官方题解 已经写得非常细致了,这里就不重复写了。

写在最后

一直在 LeetCode 上刷题,之前还加入了组织,有兴趣加入一起学习的同学可以在下方留言或者关注我的微信公众号「tony老师的前端补习班」并在后台留言,可以进群跟大佬们一起学习。


tonychen
1.2k 声望272 粉丝