我正在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/