题目:
思路:
纵向遍历,从前往后遍历所有字符串的每一列。比较相同列上的字符是否相同,相同继续进行下一列的比较,不同则不属于公共前缀。
算法实现:
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){
//遍历下一个位置字符串的字符与第一个字符串的第i个字符比较是否相等
return strs[0].substring(0,i);
}
}
}
return strs[0];
}
}
时间复杂度:
O(mn),m为字符串数组中的字符串的平均长度;n为字符串的数量。