「字符串」leetcode 14.最长公共前缀(简单)

232 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一、了解题目

附上原题链接:14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 :

输入:strs = ["flower","flow","flight"]
输出:"fl"

二、解题思路

依据以上题意,我们来写下解题思路:

  • 遍历数组中的第一个元素,之后用第一个元素与其他元素进行比较;
  • every() 方法来判断相对应位置的字母是否相等,相等的话则进行记录,依此进行递进。

三、代码实现

依据上面的题解,我们将用 js 来实现这道题。具体实现代码如下:

/**
 * 
 * @param {array}} strs 字符串数组
 */
let longestCommonPrefix = function(strs){
    // 1.用于存放数组中的偶第一个字符串,之后的一一拿来与该数对比
    let str = strs[0];
    // 2.判断第一个字符串的长度是否为空,为空则直接返回''
    // 注意,如果换成strs == [] 是不合理的,因为永远不知道后台会传过来什么数据,所以不要单一判断为就是数组[]
    if(!str){
        return '';
    }
    // 3.用于存放最长前缀结果
    let res = '';
    // 4.遍历第一个字符串的所有元素
    for(i = 0; i < str.length; i++){
        // 4.1 定义一个flag为布尔值
        // every() 方法用于检测数组所有元素是否都符合指定条件
        // every方法为对数组strs进行遍历,遍历后得到item,得到item后再对每个字符串一一进行遍历,查询是否与第一个字符串中的元素相匹配
        let flag = strs.every(item => item[i] === str[i]);
        if(flag){
            // 4.2如果多个字符串同个下标值的字母一样,则继续叠加
            res += str[i];
        }else{
            //4.3 一旦有前缀不一样,直接跳出循环
            return res;
        }
    }
    return res;
}

以上就是关于最长公共前缀的题解,不知道对小伙伴们是否有帮助呢?

我们下期见👋👋👋