Write a function to find the longest common prefix string amongst an array of strings.
总之不难,但是脑袋要清醒..
代码:
public class Solution {
public String longestCommonPrefix(String[] strs) {
String res ="";
if(strs.length == 0){
return "";
}
if(strs.length ==1){
return strs[0];
}
int p1 =0,p2 = strs.length-1;
//控制在线性时间,好像是不可能的。。
int len = strs[0].length()>strs[1].length()?strs[1].length():strs[0].length();
for(int i=0;i<len;i++){
if(strs[0].charAt(i) == strs[1].charAt(i)){
res += strs[0].charAt(i);
}else break;
}
// System.out.println(res);
//已经找到了一个公共子序列,判断会不会变得更短
for(int i = 2;i<strs.length;i++){
int len2 = res.length()>strs[i].length()?strs[i].length():res.length();
System.out.println("len2 :"+len2);
if(len2 == 0){
return "";
}
//如果已有的字符比要比较的字符长,截取
if(len2 < res.length()){
res = res.substring(0, len2);
}
for(int j=0;j<len2;j++){
if(res.charAt(j)!=strs[i].charAt(j)){
if(j==0){
return "";
}
res = res.substring(0, j);
break;
}
}
}
return res;
}
}