14. 最长公共前缀
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
说明:所有输入只包含小写字母 a-z 。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
分析:取字符串数组中的第一个字符串,遍历第一个字符串每个字符,与字符串数组中后续字符串比较,strs[j].charAt(i) != c表示两字符不相等,i == strs[j].length()表示遍历到i时strs[j]已经到尾部,最后返回子字符串,即要求的字符串数组中最长公共前缀。
时间复杂度:O(S),S 是所有字符串中字符数量的总和。空间复杂度:O(1),只需要使用常数级别的额外空间。
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0)
return "";
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() || strs[j].charAt(i) != c)
return strs[0].substring(0,i);
}
}
return strs[0];
}
}