编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
思路:
遍历数组,找出curr(初始为数组的第一个值)与数组元素的公共前缀,然后更新curr为此前缀。
解法一:老老实实遍历
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if (strs.length === 0) return '';
let curr = strs[0];
for (let str of strs) {
let temp = ''
for (let i = 0, j = 0, leni = curr.length, lenj = str.length; i < leni & j < lenj; i++, j++) {
if (curr[i] !== str[j]) {
break;
} else {
temp += str[j];
}
}
curr = temp;
}
return curr
};
解法二:使用reduce,其实差不多,不过语句更精简。reduce的用法:MDN JavaScript reduce
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if (strs.length === 0) return '';
let res = strs.reduce( (x, y) => {
let temp = ''
for (let i=0, j=0, leni=x.length, lenj=y.length; i<leni & j<lenj; i++,j++) {
if (x[i] === y[j]) { temp += x[i] }
else { break; }
}
return temp;
})
return res
};