leetcode 14 最长公共前缀 JavaScript

leetcode 14 最长公共前缀 JavaScript
在这里插入图片描述
思路:
纵向扫描(个人觉得比较好理解的解法):首先取数组str中第一个字符串(strs[0]),从strs从第二个字符串开始循环(strs[1]开始),每次循环都用一个j来记录本次循环能够取到的最长字符串长度,之后只需要对最开始取出来的字符串进行一个截取0到j的长度就能够得到本次循环的公共前缀了。那么具体这个j应该怎么统计呢 举个例子:
[flower,flow,flight] 取出flower作为参照。从第二个flow开始,本次循环是flower和flow做比较,j就是我们当前扫描的位置。
j=0 两个都是f,j++;
j=1 两个都是l,j++;
j=2 …直到j=3,也都是w,j++遍历结束因为flow已经遍历完了。此时最长公共前缀更新为substring(0,4)得到flow
下一次循环到flight,flow和flight比较
j=0 都是f j++;
j=1 都是l j++;
j=2 发现不一样了 此时j不再自增
最长公共前缀更新为substring(0,2)得到fl
到这里整个strs遍历完了,结果为fl。

代码如下:

var longestCommonPrefix = function(strs) {
    if(strs.length==0) return "";
    let ans = strs[0];//取第一个数作为对比
    for(let i = 1; i<strs.length;i++){//遍历strs
        let j = 0;//用于记录本次遍历strs[i]时能够取到最长的字符串长度
        while(j<ans.length && j<strs[i].length){
            if(ans[j] !=strs[i][j]) break;
            j++;
        }
        ans = ans.substring(0,j)
        if(ans=="") return ans;
    }
    return ans;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值