题目:
Write a function to find the longest common prefix string amongst an array of strings.
题意:
就是求一个字符串数组中的所有字符串的最长前缀。也就是说在做一个字符串数组中,因为有很多个子字符串,所以需要依次比较。这里有一个思路,因为2个字符串的最长公共前缀,其长度必然不可能超过最短字符串的长度,设最短字符串长度为n,那么只要比较这2个字符串的前n个字符即可。得到的最长公共前缀prefix,再拿这个与数组中的下一个字符串做比较,方法同上。如果数组中的某个字符串长度为0,那么就直接返回""(不是null)。
public String longestCommonPrefix(String[] strs)
{
int length = strs.length;
if(length == 0)
return "";
else
{
String prefix = strs[0];
for(int i = 1; i < length; i++)
{
if(prefix.length() == 0 || strs[i].length() == 0)
return ""; //每次先判断拿到的字符串的长度是否是0,如果是0,那么就直接返回空
int len = prefix.length() < strs[i].length() ? prefix.length() : strs[i].length(); //然后再判断长度,哪个小,就将小的赋值给len
int j = 0;
for(j = 0; j < len; j++) //每次都一次比较
{
if(prefix.charAt(j) != strs[i].charAt(j))
break;
}
prefix = prefix.substring(0, j);
}
return prefix;
}
}