原题描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,”flow”,”flight”]
输出:”fl”
示例 2:
输入:strs = [“dog”,”racecar”,”car”]
输出:””
解释:输入不存在公共前缀。
提示:
0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
个人解法
Java
JavaScript
/*
* @lc app=leetcode.cn id=14 lang=javascript
*
* [14] 最长公共前缀
*/
// @lc code=start
var checkChar = function (str, char, index) {
return str[index] === char;
}
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function (strs) {
let answer = '';
strs.sort((str1, str2) => {
if (str1.length > str2.length) {
return 1;
}
return -1;
})
const str = strs[0];
let index = 0;
for (let i = 0; i < str.length; i++) {
let flag = true;
for (let j = 1; j < strs.length; j++) {
if (!checkChar(strs[j], str[index], index)) {
flag = false;
break;
}
}
if (flag) {
index++;
} else {
break;
}
}
return str.substr(0, index);
};
// @lc code=end
更优解法
Java
JavaScript
/**
* @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;
};