问题:
Write a function to find the longest common prefix string amongst an array of strings.
思路:首先,处理因特殊的输入而导致的异常:判断字符串数组是否引用为空(可导致java.lang.NullPointerException),判断字符串数组是否为长度为0,判断字符串数组的第0项字符串的长度为0
然后,进行2次循环,外循环遍历字符串数组的所有元素,内循环比较两个字符串的各位的相等。
算法:
<span style="font-size:14px;">public static String longestCommonPrefix(String[] strs)
{
if (strs == null)
return null;
if (strs.length == 0)
return "";
if (strs[0].length() == 0)
return "";
String longestCommon = strs[0];
for (int i = 1; i < strs.length; i++)
{
int num = longestCommon.length() > strs[i].length() ? strs[i]
.length() : longestCommon.length();
int j = 0;
for (; j < num; j++)
{
if (longestCommon.charAt(j) != strs[i].charAt(j))
break;
}
if (j == 0)
return "";
longestCommon = longestCommon.substring(0, j);
}
return longestCommon;
}</span>
</pre><pre name="code" class="java" style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 30px;"><span style="font-size: 18px; font-family: 'small Monaco', Menlo, Consolas, 'Courier New', monospace; line-height: 17px; white-space: pre; background-color: rgb(238, 238, 238);"> </span><pre name="code" class="java"><span style="font-size:14px;"><strong> </strong>public String longestCommonPrefix(String[] strs) {
if(strs.length==0) return "";
String str0 = strs[0];
if(str0.length()==0) return "";
int rightMostIndex = str0.length()-1;
for(int k=1;k<strs.length;k++){
for(int i=0;i<=rightMostIndex;i++){
if((i>strs[k].length()-1)||strs[k].charAt(i)!=str0.charAt(i))
rightMostIndex=i-1;
}
}
return rightMostIndex>=0?str0.substring(0,rightMostIndex+1):"";
}</span>