编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
今天还是用js写的,这个题最重要的不是思路,而是能不能熟练使用字符串的相关方法:
startsWith(),判断字符串是否以某个字符开头。
这里搜索了一下手撕startsWith和endWith
String.prototype.startWith=function(str){
var reg=new RegExp("^"+str);
return reg.test(this);
}String.prototype.endWith=function(str){
var reg=new RegExp(str+"$");
return reg.test(this);
}
var longestCommonPrefix = function(strs) {
//定义一个空字符串用来进行公共前缀的拼接
let ans = "";
for(const i of strs[0]){
//检测数组中每一个元素是否满足every内的条件
//条件就是里面的每一个元素是否满足以i开头
//i就是第一个元素里的每一项。
if(!strs.every(str => str.startsWith(ans+i))){
break;
}
//如果满足,那么进行字符串拼接到公共前缀里
ans += i;
}
//返回公共前缀
return ans;
};
这里最重要的一个思路就是随便遍历数组中的一项,因为只要它不和其他项存在公共前缀,就证明,这个字符串数组没有公共前缀。
今日已完成!!
写中期答辩ppt写到脑子要炸了,还好差不多写完了。。。