题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] 仅由小写英文字母组成
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/lo… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解思路
因为找的是公共的前缀,所以按照题意,任意比较两个字符串,从第一个字符开始比较,找出连续相等的字符,截取出来作为公共前缀,直到所有字符串比较完,最后只要公共前缀不为空则存在,返回前缀。
题解代码
/*
* @lc app=leetcode.cn id=14 lang=javascript
*
* [14] 最长公共前缀
*/
// @lc code=start
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if (!strs.length) return "";
//因为找的是公共的前缀,所以按照题意,任意比较两个字符串,
//从第一个字符开始比较,找出连续相等的字符,截取出来作为公共前缀,
//直到所有字符串比较完,最后只要公共前缀不为空则存在,返回前缀
let publicStr = strs[0];
for (let i = 1; i < strs.length; i++) {
let j = 0;
for (; j < publicStr.length && j < strs[i].length; j++) {
//从第一个字符比较两个串直到遇到两个串同一位置字符不同为止
if (publicStr[j] !== strs[i][j]) break;
}
//index之前的字符即为相同的字符,截取出来
publicStr = publicStr.substring(0,j);
//如果结果是空,说明不具备公共的前缀,直接返回
if (publicStr === "") return publicStr;
}
return publicStr;
};
// @lc code=end