小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、了解题目
附上原题链接: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;
}
以上就是关于最长公共前缀的题解,不知道对小伙伴们是否有帮助呢?
我们下期见👋👋👋