leetcode14. 最长公共前缀(Javascript)

该博客探讨了如何使用纵向扫描法找到一组字符串的最长公共前缀。通过遍历每个字符串的字符并逐个比较,一旦发现不匹配即停止,最终得到公共前缀。算法的时间复杂度为O(mn),其中m是字符串数组长度,n是最短字符串的长度,空间复杂度为O(1)。
摘要由CSDN通过智能技术生成

在这里插入图片描述
纵向扫描法:按照公共前缀的特征可知从数组中首个字符串的首个字母往第二个字符串的首个字符依次向下比较都会相等,如果不相等则公共前缀字母到此结束

var longestCommonPrefix = function(strs) {
    // 横向扫描递归,纵向扫描
// 理解好题目的意思,明确公共前缀有什么特点和最长有什么特点,可以得出什么条件
let result=''
if(strs.length===0){
    return ''
}else if(strs.length===1){
    return strs[0]
}
for(let j=0;j<strs[0].length;j++){
for(let i=0;i<strs.length-1;i++){
if(strs[i][j]!==strs[i+1][j]){
    // 一旦不相等就马上返回
return result
}
if(i===strs.length-2){
    result+=strs[i][j]
}
}
}
return result
};

在这里插入图片描述
时间复杂度O(mn),m是数组长度,n是数组中最短的字符串的长度,空间复杂度O(1),使用的额外空间复杂度为常数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Feng Wuqian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值