求数组中最大的公共前缀
function computedCommonStrByArr(arr) {
if (!arr.length) {
return '数组长度为0,没有公共的前缀';
} else if (arr.length === 1) {
return `公共的前缀为:${arr[0]}`;
} else {
// 获取最短的字符串
const getMinLengthIndex = (arr) => {
let minLengthIdx = 0;
let minLength = arr[0];
arr.forEach((item, index) => {
if (item.length < minLength) {
minLengthIdx = index;
minLength = item.length;
}
});
return minLengthIdx;
};
const minLengthIdx = getMinLengthIndex(arr);
let minLengthStr = arr[minLengthIdx];
let endSign = false;
// 匹配最短字符串是否是最长公共前缀的条件:filter出来的数组长度和原数组长度一致
while (minLengthStr.length && !endSign) {
const newArr = arr.filter((item) => item.indexOf(minLengthStr) !== -1);
endSign = newArr.length === arr.length;
if (!endSign) {
minLengthStr = minLengthStr.slice(0, minLengthStr.length - 1);
}
}
if (minLengthStr.length < 1) {
return '没有公共的前缀';
} else {
return `公共的前缀为:${minLengthStr}`;
}
}
}
自测
let arr = [];
arr = ['aaafsd', 'aawwewer', 'aaddfff'];
arr = ['abafsddd', 'abwwewer', 'abddffff'];
arr = ['a', 'abwwewer', 'abddffff'];
arr = ['', 'abwwewer', 'abddffff'];
console.log(computedCommonStrByArr(arr));
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。