题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
样例
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
算法1
(暴力枚举) $O(nm)$
第一反应trie,结果发现暴力匹配就行了hh
时间复杂度
n代表词的数量,m代表词的平均长度,最坏情况是遍历所有词的所有字符,所以是$O(nm)$
参考文献
C++ 代码
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if (strs.empty()) return "";
string p = strs[0], res;
bool flag = false;
for (int i = 0; i < p.size(); ++i){
for (int j = 1; j < strs.size(); ++j){
if (i >= strs[j].size() || strs[j][i] != p[i]){
flag = true;
break;
}
}
if (flag) break;
res += p[i];
}
return res;
}
};