前言
一个小伙伴说希望成立一个刷题小组,本就着富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育社会主义核心价值观,我答应他了。
因为也没有刷过题,比较菜。然后就看了下别人家的孩子怎么刷题的,这里附上链接。
朝花夕拾 - 2019 总结(附 283 道 LeetCode 题解)
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例
输入: strs = ["flower","flow","flight"]
输出: "fl"
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
/**
* @param {string[]} strs
* @return {string}
* 只考虑前缀的话,可以逐个比较,拿到公共部分,比较长度拿到最小的就可以了。
*/
var longestCommonPrefix = function (strs) {
//字符串公共部分
function getPublic(str1, str2) {
let len = str1.length < str2.length ? str1.length : str2.length
let resStr = ""
for (let j = 0; j < len; j++) {
if (str1[j] == str2[j]) {
resStr += str1[j]
} else {
break
}
}
return resStr
}
//取第一个作为比较字符串,初始化
let PreStr1 = strs[0]
for (let i = 1; i < strs.length; i++) {
PreStr1 = getPublic(PreStr1, strs[i])
}
return PreStr1
};
太菜了,看看大佬们怎么写的。
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length == 0)
return "";
let ans = strs[0];
for(let i =1;i<strs.length;i++) {
let j=0;
for(;j<ans.length && j < strs[i].length;j++) {
if(ans[j] != strs[i][j])
break;
}
ans = ans.substr(0, j);
if(ans === "")
return ans;
}
return ans;
};
好像思路和大佬是一样的,就是没有大佬的效率高,还是太菜了。