给定一个String类型数组,要求写一个方法,返回数组中这些字符串的最长公共前缀。
方法一:
import java.util.Scanner;
import java.util.logging.Logger;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;
public class Solution {
public static String longestCommonPrefix(String[] strs) {
if (strs.length == 0) return "";
for (int j = 0; j < strs[0].length(); ++j){ // 纵向扫描
for (int i = 1; i < strs.length; ++i){
if (j == strs[i].length() ||strs[i].charAt(j) != strs[0].charAt(j))
return strs[0].substring(0, j);
}
}
return strs[0];
}
public static void main(String[] args) {
String strs[] = new String[]{"abcdefg","abcef","abcdeabcg"};
System.out.println(longestCommonPrefix(strs));
}
}
方法二:
public String longestCommonPrefix(String[] strs) {
String result = strs.length==0?"":strs[0];
for(int j=0;j<strs.length;j++){
result = commonPrefix(result,strs[j]);
}
return result;
}
private String commonPrefix(String origin,String target){
StringBuffer sb = new StringBuffer();
int loop = origin.length()>=target.length()?target.length():origin.length();
for(int i=0;i<loop;i++){
if(origin.charAt(i) == target.charAt(i)){
sb.append(origin.charAt(i));
}else{
break;
}
}
return sb.toString();
}