力扣刷题:最长公共前缀

87 阅读2分钟

前言:锻炼自己的思想,规范自己的编程思路。

问题:

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

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

示例:(放代码里面)

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

思路:

函数名为 longestCommonPrefix,它用于查找字符串数组中所有字符串的最长公共前缀。

函数接受一个字符串数组strs 作为输入。声明一个变量 re 来存储最长公共前缀,并将其初始化为字符串数组的第一个元素(如果存在)或空字符串。

接下来,检查字符串数组的长度是否为1,如果是,则直接返回第一个元素。

然后,使用一个循环遍历字符串数组。对于每个字符串strs[i],使用一个 while 循环来检查它的前缀是否与当前的最长公共前缀相同。如果不同,则将最长公共前缀的长度减1,并继续循环。直到找到相同的前缀或最长公共前缀为空为止。

最后,返回最长公共前缀。

基于上述思考,代码如下:

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

执行结果如下图:

image-20230627182525173.png

学到的知识点:

可以使用 slice 方法来获取字符串的前缀。slice 方法接受两个参数:start 和 end,分别表示要获取的子字符串的起始位置和结束位置。如果省略 end 参数,则默认为字符串的长度。

也可以使用负数作为end 参数,表示从字符串的末尾开始计算位置。例如,如果想获取字符串除最后一个字符以外的所有字符,可以使用下面的代码:

let str = "abcdef";
let prefix = str.slice(0, -1);
console.log(prefix); // 输出 "abcde"