最长公共前缀(Longest Common Prefix)是指在一组字符串中,能够作为所有字符串前缀的最长字符串。例如,对于字符串数组 ["flower", "flow", "flight"]
,最长公共前缀是 "fl"
。
分而治之是一种递归解决问题的方法,通过将大问题分解为小问题来解决。对于最长公共前缀问题,可以将字符串数组分成两部分,分别找到每部分的最长公共前缀,然后再合并结果。
以下是使用分而治之策略实现的JavaScript代码:
function longestCommonPrefix(strs) {
if (strs.length === 0) return "";
return divideAndConquer(strs, 0, strs.length - 1);
}
function divideAndConquer(strs, left, right) {
if (left === right) return strs[left];
const mid = Math.floor((left + right) / 2);
const leftPrefix = divideAndConquer(strs, left, mid);
const rightPrefix = divideAndConquer(strs, mid + 1, right);
return commonPrefix(leftPrefix, rightPrefix);
}
function commonPrefix(str1, str2) {
let prefix = "";
for (let i = 0; i < Math.min(str1.length, str2.length); i++) {
if (str1[i] !== str2[i]) break;
prefix += str1[i];
}
return prefix;
}
// 示例用法
const strs = ["flower", "flow", "flight"];
console.log(longestCommonPrefix(strs)); // 输出: "fl"
通过上述方法,可以有效地解决最长公共前缀问题,并且在处理大规模数据时也能保持较高的效率。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云