【从零开始的JavaScript力扣刷题】14. 最长公共前缀

89 阅读1分钟

题目

leetcode-cn.com/problems/lo…

image.png

思路

画解算法:leetcode-cn.com/problems/lo…

①有单词(数组)为空

②正常情况

使用变量ans为第一个单词(strs[0])作为公共前缀

与后面的单词一一对比改变ans的值

③两两相对为空

代码展示

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    if(strs.length == 0)
        return "";
    let ans = strs[0];
    for(let i =1;i<strs.length;i++) {
        let j=0;
        for(;j<ans.length && j < strs[i].length;j++) {
            if(ans[j] != strs[i][j])
                break;
        }
        ans = ans.substr(0, j);
        if(ans === "")
            return ans;
    }
    return ans;
};

知识点

  • for(;j<ans.length && j < strs[i].length;j++) {...}

需要满足两个条件,个人推测类似双指针(可能是错的如果大佬看到望指正)

Ⅰ j 作为ans的指针

Ⅱ j 作为对照单词的指针

  • if(ans[j] != strs[i][j])

指针一一对应,如果字母不等则停止for(第i位的单词)的循环

下一步是更改ans的值,将ans与i+1位的单词进行for(j)的循环

多维数组:如何在 JavaScript 中操作二维数组 - DevPoint的文章 - 知乎 zhuanlan.zhihu.com/p/435742453

  • ans = ans.substr(0, j);

抽取字符,从第0位到第j位的字母作为新的ans

substr:developer.mozilla.org/zhCN/docs/W…