# 14. 最长公共前缀

# 题目

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

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

TIP

示例  1:

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

示例  2:

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

说明:

所有输入只包含小写字母  a-z 。

# 题解

# 利用 reduce

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    'use strict';
    if (strs === undefined || strs.length === 0) { return ''; }

    // 利用 reduce 两两比较得到公共前缀
    return strs.reduce((prev, next) => {
        let i = 0;

        // 如果不存在就跳出 ab都存在的时候 a&&b&&a=a 有一个不存在就会等于 undefined
        while (prev[i] && next[i] && prev[i] === next[i]) i++;
        return prev.slice(0, i);
    });
};

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18