标签:leetcode longest common prefi java
Longest Common Prefix Total Accepted: 47436 Total Submissions: 182575翻译:编写一个函数去查找在字符串数组中的最长公共前缀的字符
尝试一(失败),代码如下:
public static String longestCommonPrefix1(String[] strs)
{
//temp为中间量
String temp=strs[0];
if(strs==null||strs.length==0)
{
return "";
}
for (int i = 0; i < strs.length; i++)
{
for (int j = i; j < strs.length; j++)
{
if(strs[i].charAt(0)!=strs[j].charAt(0))
{
return "";
}
}
}
for (int i = 1; i < strs.length; i++)
{
int len=temp.length()<strs[i].length()?strs[0].length():strs[i].length();
int j;
for ( j = 0; j<len; j++)
{
char first=temp.charAt(j);
char current=strs[i].charAt(j);
if(first!=current)
{
break;
}
}
temp=strs[0].substring(0,j);
}
return temp;
}尝试二(成功),代码如下:
public static String longestCommonPrefix(String[] strs)
{
int len = strs.length;
if(len == 0) return "";
if(len == 1) return strs[0];
int i = 1;
String temp = strs[0];
while(i < len)
{
int minLen = Math.min(temp.length(), strs[i].length());
if(minLen == 0) return "";
int j = 0;
while(j < minLen)
{
if(temp.charAt(j) == strs[i].charAt(j))
{
j++;
}
else
{
if(j == 0) temp = "";
break;
}
}
temp = temp.substring(0,j);
i++;
}
return temp;
}
心得:尝试一与尝试二的解题思想是一样,但是尝试一未能避开一些一般性的测试输入,如:{a,b,c} ,这个我使用了两个for循环进行遍历进行排除,太麻烦。 {“”,“”,“”}三个空字符串,没能排除,于是使用尝试二的方法,成功避开一些意外输入。
解题思想:使用中间变量temp将出现的公共String进行sub,即抽取出来。然后依次往下进行循环遍历即可。
leetcode Longest Common Prefix 14
标签:leetcode longest common prefi java
原文地址:http://blog.csdn.net/zzc8265020/article/details/45967947