描述
给你一个长度为 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
};