前言:锻炼自己的思想,规范自己的编程思路。
问题:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例:(放代码里面)
输入: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
};
执行结果如下图:
学到的知识点:
可以使用 slice 方法来获取字符串的前缀。slice 方法接受两个参数:start 和 end,分别表示要获取的子字符串的起始位置和结束位置。如果省略 end 参数,则默认为字符串的长度。
也可以使用负数作为end 参数,表示从字符串的末尾开始计算位置。例如,如果想获取字符串除最后一个字符以外的所有字符,可以使用下面的代码:
let str = "abcdef";
let prefix = str.slice(0, -1);
console.log(prefix); // 输出 "abcde"