一、问题描述
Write a function to find the longest common prefix string amongst an array of strings.
求字符串数组中的最大前缀。
二、解题思路
1.判断字符串数组是不是空数组或者是否为null,是则返回空字符串。
2.以字符串数组中的第1个字符串strs[0]作为预设前缀pre,然后从strs[1]开始判断当前字符串是否在位置0包含预设前缀pre,如果包含则判断下一个字符strs[2];如果不包含,则去掉预设前缀pre的尾字符作为新的预设前缀pre
三、代码
public class Solution {
public String longestCommonPrefix(String[] strs) {
/*
if(strs.length==0)
return "";
if(strs.length==1)
return strs[0];
int minlength=Integer.MAX_VALUE;
int minpoint=0;
for(int i=0;i<strs.length;i++){
if(strs[i].length()<minlength){
minpoint=i;
minlength=strs[i].length();
}
}
for(int i=0;i<strs.length&&strs[minpoint].length()!=0;i++){
if(i==minpoint)
continue;
minlength=Math.min(strs[minpoint].length(),strs[i].length());
int j=0;
for(;j<minlength;j++){
if(strs[i].charAt(j)!=strs[minpoint].charAt(j)){
// j++;
break;
}
}//for循环有两种退出方式,不论哪种退出方式,当前位置都指向了最大前缀的下一个位置
// j--;
if(j<=0)
strs[minpoint]="";
else
strs[minpoint]=strs[minpoint].substring(0,j);
//System.out.println(strs[minpoint].substring(0,j));
}
return strs[minpoint];
*/
if(strs.length==0||strs==null)
return "";
String pre=strs[0];
for(int i=1;i<strs.length;i++){
while(strs[i].indexOf(pre)!=0){
pre=pre.substring(0,pre.length()-1);
}
}
return pre;
}
}