编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
算法分析
暴力枚举
- 枚举第一个字符串的所有元素,记录当前枚举到的元素
c
,若后面的字符串中的同位置元素不存在或者不是c
,则直接返回,若后面的字符串中的同位置元素都符合,则拼接到res
后面
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string res;
//如果为空,直接返回
if(strs.empty()) return res;
for(int i = 0;;i++)
{
//大于第一个字符的长度,直接返回第一个字符
if(i >= strs[0].size()) return res;
//提取第一个字符串的第i个字符
char c = strs[0][i];
//循环每一个字符串
for(auto& str: strs)
if(str.size() <= i || str[i] != c)
return res;
res += c;
}
return res;
}
};