题目:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
。
示例:
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
思路:
定义一个新的字符串,如果数组中每一项都是以这个字符串开头,那么新字符串就复制字符串数组中第一个字符串一个字符,最后返回该字符串
题解:
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function (strs) {
//选择字符串数组中的第一个字符作为基准字符串,其实任意一个都行
let str = strs[0] || "";
//如果字符串数组为空或者第一个字符串是空字符串,那么返回空字符串
if (strs.length == 0 || str.length == 0) { return "" }
let result = "";
let index = 0;
//如果字符串数组中每一项都以result开头,并且index小于基准字符串的长度,那么index++继续循环
while (strs.every(str => str.startsWith(result)) && index < str.length) {
result += str[index];
index++;
}
result = !strs.every(str => str.startsWith(result)) ?
result.substring(0, result.length - 1) : result;
return result;
};