14. Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string`""`.

Example 1:

Input: ["flower","flow","flight"]

Output: "fl"

Example 2:

Input: ["dog","racecar","car"]

Output: ""

Explanation: There is no common prefix among the input strings.

Note:

All given inputs are in lowercase letters`a-z`.

 

var longestCommonPrefix = function(strs) {
    if(!strs.length) return '';
    var len = strs.reduce((pre,item)=>{
        return Math.min(pre,item.length);
    },Number.MAX_VALUE);

    var ans='';
    for(var i=0;i<len;i++){
        var a = strs[0][i];
        var f = strs.every((item)=>{
            return item[i] === a;
        });
        if(!f) break;
        ans += a;
    }
    return ans;
};

 

 

var longestCommonPrefix = function(strs) {
    if (!strs.length) return ""
    
    let baseWord = strs[0];
    for (let word = 1; word < strs.length; word++) {
        // currWord = String(strs[word])
        while (String(strs[word]).indexOf(baseWord) !== 0 && baseWord !== "") {
            baseWord = baseWord.substring(0, baseWord.length - 1)
        }
    }
    return baseWord;
};

 

 

var longestCommonPrefix = function(strs) {
     if (strs.length == 0) return "";
    let prefix = strs[0];
    for (let i = 1; i < strs.length; i++)
        while (strs[i].indexOf(prefix) != 0) {
            prefix = prefix.slice(0, prefix.length - 1);
            if (prefix==="") return "";
        }        
    return prefix;
    
};

 

 

reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。

reduce() 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上次回调函数的返回值),当前元素值,当前索引,调用reduce的数组。

arr.reduce(callback,  [initialValue])

callback (执行数组中每个值的函数,包含四个参数)

- previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))

- currentValue (数组中当前被处理的元素)

- index (当前元素在数组中的索引)

- array (调用 reduce 的数组)

initialValue (作为第一次调用 callback 的第一个参数)

 

var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(pre, cur, index, arr) {
    console.log(pre, cur, index);
    return pre + cur;
})
console.log(arr, sum);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值