leetcode 算法题014 (简单005) 最长公共前缀
- 题目介绍
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
- 示例
输入: [“flower”,“flow”,“flight”]
输出: “fl”
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
- 说明:
所有输入只包含小写字母 a-z 。
- 解法一
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(!strs || strs.length === 0 || !strs[0]) {
return '';
}
let prefix = '', length = strs[0].length;
let i = 0;
while(i < length) {
let j = 0;
let c = strs[0][i];
if(!c) {
return prefix;
}
while(j < strs.length) {
if(c !== strs[j++][i]) {
return prefix;
}
}
prefix += c;
i++;
}
return prefix;
};
执行用时 : 100 ms, 在所有 JavaScript 提交中击败了26.17%的用户
内存消耗 : 34.9 MB, 在所有 JavaScript 提交中击败了51.40%的用户
- 解法二
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if (!strs || strs.length === 0 || !strs[0]) {
return '';
}
if(strs.length === 1) {
return strs[0];
}
let i = 1;
let prefix = strs[0];
while(i < strs.length) {
prefix = getCommonPrefix(prefix, strs[i++]);
if(prefix === '') {
return prefix;
}
}
return prefix;
};
let getCommonPrefix = (s1, s2) => {
let prefix = '';
let length = s1.length > s2.length ? s1.length : s2.length;
let i = 0;
while(i < length) {
if(s1[i] !== s2[i]) {
return prefix;
}
prefix += s1[i++];
}
return prefix;
}
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了93.06%的用户
内存消耗 : 37.5 MB, 在所有 JavaScript 提交中击败了5.03%的用户