前端算法-最长公共前缀

简介: 前端算法-最长公共前缀

题目

编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""

输入: strs = ["flower","flow","flight"]
输出: "fl"
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

题解

我们在函数中先判断出参strs的数据长度,如果长度为0,则直接返回空字符串,否则就往下执行,声明一个变量arr,我们使用数组中的map方法将出参strs的所有数据长度返回出来并直接赋值给arr,在声明一个变量strsLength,我们这里需要使用到Math数学对象上的min方法,我们将arr数组解构出来后传递进去,这样就能获取到了最小数据长度,然后把最小数据长度赋值给strsLength变量,在对出参strs使用find方法,拿出参strs中的每个值的长度和strLength变量进行对比,将查找到符合条件的值赋值给新声明的变量minStr,这样就找到了最小字符串,然后进行循环,当minStr有长度的情况下就一直进行循环,在循环中声明一个flag变量,对出参strs使用every方法,在every方法中设定条件,如果出参strs每项都通过indexOf方法查找minStr变量的值返回的索引都是0则为true,否则就为false,我们将返回的值赋值给flag变量,然后使用if语句进行判断当前的flag变量是否为true,如果为true则直接返回minStr变量,否则就对minStr变量使用slice方法删除最后一个字符,并重新赋值给minStr变量,如果当循环结束还没有返回minStr变量,则直接返回空字符串

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    if(strs.length==0){
        return '';
    }
    let arr =strs.map(item => item.length);
    let strsLength = Math.min(...arr);
    let minStr = strs.find(item => item.length === strsLength);
    while (minStr.length) {
    let flag=strs.every(item => item.indexOf(minStr) === 0)
        if (flag) {
            return minStr;
        }else{
            minStr = minStr.slice(0, -1);
        } 
    }
    return '';
};

坚持努力,无惧未来!

相关文章
|
1月前
|
移动开发 算法 前端开发
前端算法之堆排序
前端算法之堆排序
20 1
|
1月前
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
1月前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
22 0
|
1月前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
18 0
|
20天前
|
前端开发 算法 JavaScript
优化算法在前端性能提升中的应用
随着互联网应用的日益复杂,前端性能优化成为开发者关注的焦点。本文探讨了优化算法在前端性能提升中的重要作用,包括对JavaScript代码的优化、资源加载的算法选择以及页面渲染的优化策略。通过合理应用优化算法,可以有效提升前端应用的性能和用户体验。
|
23天前
|
存储 算法 Java
【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
12 1
|
1月前
|
算法 前端开发
前端算法之基数排序
前端算法之基数排序
19 1
|
1月前
|
算法 前端开发 搜索推荐
前端算法之桶排序
前端算法之桶排序
12 1
|
1月前
|
存储 算法 前端开发
前端算法之计数排序
前端算法之计数排序
17 1
|
1月前
|
缓存 算法 前端开发
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
前端开发者必知的缓存淘汰策略:LRU算法解析与实践