每日刷题第2天 2021.12.27
14.最长公共前缀
- 难度:简单
题目
- 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串
""。
示例
输入: strs = ["flower","flow","flight"]
输出: "fl"
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
分析
- 选择字符串数组中的第一个元素
strs[0],当作比较对象。数组剩下的元素的每一项依次与strs[0]的每一项进行比较,相同则记录下来,不同就break。
解法
var longestCommonPrefix = function(strs) {
// 如果传入的数组为空
if (strs.length == 0) {
return '';
}
let ans = '';
// 取出数组中的第一个字符串
let [a,...b] = strs;
// console.log(a,b);
for (let i = 0; i < a.length; i++) {
// 定义一个标志
// console.log('循环',a[i]);
let flag = b.every((item) => { return item[i] == a[i] });
// 判断标记真,给结果加
if (flag){
ans += a[i];
// console.log('a', a[i]);
}
else break;
}
return ans;
};
附录
-
数组的
every()方法:测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。every方法为数组中的每个元素执行一次callback函数,直到它找到一个会使callback返回 falsy 的元素。如果发现了一个这样的元素,every方法将会立即返回false。否则,callback为每一个元素返回true,every就会返回true。
-
箭头函数的书写格式(!这次写题出错的地方!)
// 表达式expression,加了{}花括号,就一定要写return
(param1, param2, …, paramN) => expression
//相当于:(param1, param2, …, paramN) =>{ return expression; }
- 记:第一次面试视频,手撕算法,思路不是很清晰,安静不下来,后续再接再厉!