Question:Write a function to find the longest common prefix string amongst an array of strings.
Analysis: 先对整个Strs数组预处理一下,求一个最小长度(最长公共前缀肯定不会大于最小长度)。然后以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,有不同字符串返回当前记录的字符串就行。
Solution:
public class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null) {
return null;
} else if(strs.length==0) {
return "";
} else if(strs.length==1) {
return strs[0];
}
int minLength = getMinLength(strs);
int num = 0;
char tmp;
boolean isOver = false;
while(num<minLength) {
tmp = strs[0].charAt(num);
for(int i=1;i<strs.length;i++) {
if(strs[i].charAt(num)!=tmp) {
isOver = true;
break;
}
}
if(isOver) {
break;
}
num++;
}
return strs[0].substring(0,num);
}
private int getMinLength(String[] strs) {
int len = strs[0].length();
for(int i=1;i<strs.length;i++) {
if(len>strs[i].length()) {
len = strs[i].length();
}
}
return len;
}
}