题目描述
代码
class Solution {
// 自己想出的方法和官方的一种一样,官方的其他解法是神仙解法,先不管了
// 先拿到数组中最小单词的长度,公共前缀最多不过他
// 然后直接拿第一个开始当模板,从他的第一位到最后一位字符,分别和从第二个单词开始的剩余单词的该位作比较,只要有一个单词的该位上不同,就终止整个循环(利用flag)。
// 然后看看n是几,substring任意一个单词即可。
// 注意注释
public String longestCommonPrefix(String[] strs) {
// 报错了
// if(strs.length==null){
// return "";
// }
// 官方这里给出的判断是这样
//数组长度可以为0 --》 String[] s2 = {};等效于 String[] s2 = new String[]{} 和s2=new String[0]
// if (strs == null || strs.length == 0) {
// return "";
// }
if(strs.length==0){
return "";
}
int min=strs[0].length();
for(int i=0;i<strs.length;i++){
if(strs[i].length()<min){
min=strs[i].length();
}
}
int n=0;
for(int i=0;i<min;i++){
int flag=0;
for(int j=1;j<strs.length;j++){
if(strs[j].charAt(i)!=strs[0].charAt(i)){
flag=1;
break;
}
}
if(flag==1){
break;
}
n++;
}
// subString方法小写
// String res=strs[0].subString(0,n);
String res=strs[0].substring(0,n);
return res;
}
}