2021.11.20 每天进步一点点: 力扣算法题14

94 阅读1分钟

这里写目录标题

题目介绍

在这里插入图片描述

解题思路

当strs长度为1时,返回的是strs[0]自身。不管它本身是不是空字符串。

在strs长度>1的时候, 以下来画图举例说明:

在这里插入图片描述

解题代码

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
        if(strs.length === 1) {
        return strs[0];
    }

    // 获取所有元素中的最短长度
    // 目的是 只比较最短长度内的字符, 超出的字符不做比较
    var _len = strs[0].length;
    var minLen = 0;

    for(let v of strs) {
        minLen = Math.min(v.length, _len)
    }

    // 获取公共字符串
    var preStr = strs[0].slice(0, minLen);
    var commonStr = '';

    var _strs = strs.slice(1);

    for(let v of _strs) {
        for(var i = 0; i < preStr.length; i++) {
            if(v[i] === preStr[i]) {
                commonStr += v[i];
            } else { // 只要字符不相同,就跳出该循环
                break;
            }
        }

        // 只要其中两个字符串没有公共前缀,
        // 就立即结束循环,并返回空字符串作为最终结果
        if(commonStr.length === 0) {
            return '';
        }
        preStr = commonStr;
        commonStr = ''; // 每次完成一轮循环后,需要清空接收公共前缀的值
    }

    return preStr;
};

提交结果

在这里插入图片描述