编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成思路:遍历第一个单词的字母,依次去数组中其他字符串比较相同索引位置
java代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
// 遍历第一个字符串,找前缀
for (int i = 0; i < strs[0].length(); i++) {
boolean allContains = true;
// 遍历后面字符串数组,依次比较其他字符串的前缀
for (int j = 1; j < strs.length; j++) {
// 如果当前字符串的长度小于i,或当前字符串在i的字符不等于第一个字符串的字符,则结束
if (strs[j].length() < i + 1 || strs[0].charAt(i) != strs[j].charAt(i)) {
return strs[0].substring(0, i);
}
}
}
// 遍历完后前缀都是相同的,则返回第一个字符串即可
return strs[0];
}
}
复杂度
时间复杂度:O(mn))
,m为字符串数组长度,n位最后的公共子串长度
空间复杂度:O(1)