最长公共前缀
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串""
。
示例#
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
题解#
// 横向比较
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length === 0) return "";
return strs.reduce( (pre, cur) => {
var tmp = "";
for(let i=0;i<pre.length; ++i){
if(pre[i] === undefined || pre[i] !== cur[i]) break;
else tmp += cur[i];
}
return tmp;
})
};
// 纵向比较
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
var n = strs.length;
var target = "";
var interrupt = false;
var i = -1;
while(true) {
++i;
if(!strs[0]) return "";
var tmp = strs[0][i];
for(let k=0; k<n; ++k){
if(strs[k][i] === undefined || tmp !== strs[k][i]) {
interrupt = true;
break;
}
}
if(interrupt) break;
target = `${target}${tmp}`;
}
return target;
};
思路#
横向比较的方法是借助Js
标准库的reduce
方法,将每次比较的结果进行返回,作为下一次比较传入函数的第一个参数,第二个参数就是当前的字符串,注意reduce
方法在没有第三个参数的情况下是以数组中第二个值作为传入函数的第二个参数也就是当前值,也就是说长度为n
的数组只会计算n-1
次。纵向比较的方式就是依次比较字符串数组中每个字符,即不断循环比较所有字符串的第1
、2
、...
、n
个字符,在比较的过程中在列中出现不相同的字符即结束循环并返回结果。
每日一题#
https://github.com/WindrunnerMax/EveryDay
参考#
https://leetcode-cn.com/problems/longest-common-prefix/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理