题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
样例
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
算法分析
暴力枚举
- 枚举第一个字符串的所有元素,记录当前枚举到的元素
c
,若后面的字符串中的同位置元素不存在或者不是c
,则直接返回,若后面的字符串中的同位置元素都符合,则拼接到ans
后面
时间复杂度 $O(nm)$
Java 代码
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) {
return "";
}
if (strs.length == 1) {
return strs[0];
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < strs[0].length(); i++) {
char c = strs[0].charAt(i);
for (int j = 1; j < strs.length; j++) {
if (i > strs[j].length() - 1 || strs[j].charAt(i) != c) {
return stringBuilder.toString();
}
}
stringBuilder.append(c);
}
return stringBuilder.toString();
}
}
这是闫总的O(mn)算法?
差不多