力扣
var longestCommonPrefix = function (strs) {
if (!strs) return ''
strs = [...new Set(strs)]
const minStr = strs.sort((a, b) => a.length - b.length)[0]
const arrStr = [...Array(minStr.length)]
.map((_, index) => minStr.slice(0, index + 1))
.reverse()
const arrStrSlice = loopMatch(strs, arrStr)
return arrStrSlice.find(v => getAllMatch(strs, v)) || ''
}
var loopMatch = function (strs, arrStr) {
if (arrStr.length <= 3) {
return arrStr
}
const stepNum = parseInt(arrStr.length / 2)
const currentStr = arrStr[stepNum]
if (getAllMatch(strs, currentStr)) {
return loopMatch(strs, arrStr.slice(0, stepNum + 1))
} else {
return loopMatch(strs, arrStr.slice(stepNum))
}
}
var getAllMatch = function (strs, v) {
return !strs.some(str => !new RegExp(`^${v}`).test(str))
}
var longestCommonPrefix = function (strs) {
const minStr = strs.sort((a, b) => a.length - b.length)[0];
const arrStr = [...Array(minStr.length)]
.map((_, index) => minStr.slice(0, index + 1))
.reverse();
return arrStr.find((v) => !strs.some((str) => !new RegExp(`^${v}`).test(str))) || '';
};
编辑