最长公共前缀

描述

给你一个长度为 nn 的字符串数组 strsstrs , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

数据范围:
0 <= n <= 1000
0 <= len(strs[i]) <=5000
示例1
输入:["abca","abc","abca","abc","abcc"]
返回值:"abc"

思路:拿数组第一项作为正则参考值,从第二项开始遍历数组元素,每项如果不满足条件,就把正则修改成退一位,重新进行正则匹配,直到遍历完

代码实现:

    // 判断空数组情况,并直接将第一位元素作为参照物
    var re = strs[0] ? strs[0] : '';
    // 注意,这里遍历是从1开始,因为第一位被我们拿来当参照物了
    for (var i = 1; i < strs.length; i++) {
        // 注意这里的正则加了^,表示从字符开始位置开始匹配
        var regex = new RegExp('^' + re);
        // 比较其它字符看是否符合,若不符合让正则条件的字符递减
        while (!regex.test(strs[i]) && re.length) {
            // 这里控制了字符递减
            re = re.slice(0, re.length - 1);
            // 递减后重新声明正则
            regex = new RegExp('^' + re);
        };
    };
    return re;
}
module.exports = {
    longestCommonPrefix : longestCommonPrefix
};

你可能感兴趣的:(最长公共前缀)