我正在hackerrank中尝试Morgan和String挑战
https://www.hackerrank.com/challenges/morgan-and-a-string/

我的尝试如下:

public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner in = new Scanner(System.in);
        int testCases = in.nextInt();
        for(int i=0; i<testCases; i++){
            StringBuilder a = new StringBuilder(in.next());
            StringBuilder b = new StringBuilder(in.next());
            StringBuilder result = new StringBuilder();
            int indexA = 0;
            int indexB = 0;
            while(indexA < a.length() && indexB < b.length()){
                if(a.charAt(indexA)<=b.charAt(indexB)){
                    result.append(a.charAt(indexA));
                    indexA++;
                }
                else{
                    result.append(b.charAt(indexB));
                    indexB++;
                }
            }
            if(indexA==a.length()){
                result.append(b.substring(indexB,b.length()));
            }
            else{
                result.append(a.substring(indexA,a.length()));
            }
            System.out.println(result.toString());
        }

    }


我正确地获得了前两种情况:

2
插口
丹尼尔
阿巴卡巴
阿巴卡巴

输出:

达杰尼尔
阿巴巴巴卡巴卡巴

我不太确定是不是我对问题的理解是正确的,还是输入案例过多,我看不到其他测试案例,但希望你们能看一下代码。

欢迎任何帮助。

谢谢!

最佳答案

我认为,当两个堆栈上都有相同的字母时,就会出现问题:您不能随意选择(始终选择第一个或一个堆栈即可),但必须比较两个堆栈上的下一个字母(如果它们比较也等于之后的等),以便您可以确保最佳的连续性...

例如。

input: bbb bba

your output: bbbbba
correct output: bbabbb

关于java - 摩根和String HackerRank,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33927873/

10-10 15:05