思路:
横向扫描:求两个字符串的最长公共前缀,然后一直遍历。如果某个时候最长前缀长度为0,后面的就不需要遍历了。
纵向扫描:i 用来遍历第一个字符串,j 用来表示有多少个字符串
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0){
return "";
}
String prefix = strs[0];
for(int i = 1; i < strs.length; i++){
prefix = getPrefix(prefix, strs[i]);
// 如果前缀长度为0,后面的就不需要遍历了。
if(prefix.length() == 0){
break;
}
}
return prefix;
}
// 求两个字符串的最长公共前缀
public String getPrefix(String s1, String s2){
int index = 0;
int n = Math.min(s1.length(), s2.length());
while(index < n && s1.charAt(index) == s2.charAt(index)){
index++;
}
return s1.substring(0, index);
}
}
class Solution {
public String longestCommonPrefix(String[] strs) {
int len = strs[0].length();
int count = strs.length;
for(int i = 0; i < len; i++){
char ch = strs[0].charAt(i);
for(int j = 1; j < count; j++){
if(i == strs[j].length() || strs[j].charAt(i) != ch){
return strs[0].substring(0, i);
}
}
}
return strs[0];
}
}