Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中字符串数组中最长的公共前缀_Java_Arrays_String_Character_Prefix - Fatal编程技术网

Java中字符串数组中最长的公共前缀

Java中字符串数组中最长的公共前缀,java,arrays,string,character,prefix,Java,Arrays,String,Character,Prefix,我正在尝试使用java在字符串数组中查找最长的公共前缀。下面是我的解决方案,但当我把它上传到leetcode上时,它失败了,我不知道哪个测试用例失败了。我测试过的所有测试用例都可以正常工作 我的方法是匹配字符串数组中所有单词的第一个字符,如果所有单词都有相似的第一个字符,那么它将移动到第二个字符,否则函数将返回字符串 如果有人帮助我识别代码失败的测试用例,我将非常感激。以下是我编写的代码: public static String LongCommonPrefix(String[] strs)

我正在尝试使用java在字符串数组中查找最长的公共前缀。下面是我的解决方案,但当我把它上传到leetcode上时,它失败了,我不知道哪个测试用例失败了。我测试过的所有测试用例都可以正常工作

我的方法是匹配字符串数组中所有单词的第一个字符,如果所有单词都有相似的第一个字符,那么它将移动到第二个字符,否则函数将返回字符串

如果有人帮助我识别代码失败的测试用例,我将非常感激。以下是我编写的代码:

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版本,以更简洁的方式。因此,我将留给您将代码与工作代码进行比较,并确定原始代码中的问题(我认为您已经确定了问题)。一般来说,对有帮助的答案进行投票是最佳做法。这将有助于社区确定正确答案。