Java中字符串数组中最长的公共前缀
我正在尝试使用java在字符串数组中查找最长的公共前缀。下面是我的解决方案,但当我把它上传到leetcode上时,它失败了,我不知道哪个测试用例失败了。我测试过的所有测试用例都可以正常工作 我的方法是匹配字符串数组中所有单词的第一个字符,如果所有单词都有相似的第一个字符,那么它将移动到第二个字符,否则函数将返回字符串 如果有人帮助我识别代码失败的测试用例,我将非常感激。以下是我编写的代码:Java中字符串数组中最长的公共前缀,java,arrays,string,character,prefix,Java,Arrays,String,Character,Prefix,我正在尝试使用java在字符串数组中查找最长的公共前缀。下面是我的解决方案,但当我把它上传到leetcode上时,它失败了,我不知道哪个测试用例失败了。我测试过的所有测试用例都可以正常工作 我的方法是匹配字符串数组中所有单词的第一个字符,如果所有单词都有相似的第一个字符,那么它将移动到第二个字符,否则函数将返回字符串 如果有人帮助我识别代码失败的测试用例,我将非常感激。以下是我编写的代码: public static String LongCommonPrefix(String[] strs)
public static String LongCommonPrefix(String[] strs)
{
String commonPrefix="";
int count=0, k=0;
if(strs.length>0)
{
for(int i=0; i<strs[0].length(); i++)
{
int j=1;
while(j<strs.length)
{
if(strs[0].charAt(k)==strs[j].charAt(k))
{
count++;
j++;
}
else
break;
}
if(count==strs.length-1)
{
commonPrefix+=strs[0].charAt(k);
count=0;
k++;
}
else
{
return commonPrefix;
}
}
}
return commonPrefix;
}
公共静态字符串LongCommonPrefix(字符串[]strs)
{
字符串commonPrefix=“”;
整数计数=0,k=0;
如果(标准长度>0)
{
对于(int i=0;i代码中的错误出现在未检查变量(K)是否大于数组的字符串长度(j)的情况下使用的部分。
为了解决这个问题,在使用变量(K)之前添加一个条件语句就足够了。
祝您好运代码中的错误出现在您未检查变量(K)是否大于数组的字符串长度(j)的情况下使用的部分。
为了解决这个问题,在使用变量(K)之前添加一个条件语句就足够了。
祝你好运,试试这个方法
public static String longestCommonPrefix(String[] s) {
if (s.length == 0) return "";
String prefix = s[0];
for (int i = 1; i < s.length; i++) {
while (s[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length() - 1);
if (prefix.equals("")) return "";
}
}
return prefix;
}
通过打印gio,它可以很好地完成这项工作。试试这种方法
public static String longestCommonPrefix(String[] s) {
if (s.length == 0) return "";
String prefix = s[0];
for (int i = 1; i < s.length; i++) {
while (s[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length() - 1);
if (prefix.equals("")) return "";
}
}
return prefix;
}
通过打印gio,它很好地完成了这项工作。您能建议一个我的代码失败的输入吗?因为这样我会调试它并解决问题。String[]array={“farzad”,“fa”,“fardfbvdb”};是的,它失败了,但现在我修复了它。非常感谢。你能建议一个我的代码失败的输入吗?因为那样我会调试它并解决问题。String[]array={“farzad”,“fa”,“fardfvbdb”};是的,它失败了,但现在我修复了它。非常感谢。是的,它有帮助。我的意思是,您提供的输入在我的代码中不起作用。因此,现在我将对其进行调试并解决导致错误的原因。我使用的方法与您尝试的方法非常相似;但是,我以更干净的方式编写了一个正确的版本。因此,我将留给您比较您的代码用正在工作的代码编写代码,并在原始代码中识别问题(我认为您已经识别了它)。一般来说,这是一个最佳实践,对有帮助的答案进行投票。这将帮助社区确定正确的答案。是的,这很有帮助。我的意思是,您提供的输入在我的代码中不起作用。因此,现在我要调试它并解决导致错误的原因。我使用的方法与您尝试的方法非常相似;但是,我编写了一个proper版本,以更简洁的方式。因此,我将留给您将代码与工作代码进行比较,并确定原始代码中的问题(我认为您已经确定了问题)。一般来说,对有帮助的答案进行投票是最佳做法。这将有助于社区确定正确答案。