取一个由小写和大写字母组成的字符串,并以大写和小写字母交替出现但按排序的方式对其进行排序。
输入字符串:HelLoWoRld
示例输出:
排序后的字符串是:HdLeRlWloo
我的解决方案是
import java.util.Arrays;
import java.util.Scanner;
public class SortDriver {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the String: ");
String input = scanner.nextLine();
String sortedString = sortString(input);
System.out.println("The Sorted String is: " + sortedString);
}
public static String sortString(String str) {
StringBuilder sorted = new StringBuilder();
// Separate lowercase and uppercase letters
StringBuilder lower = new StringBuilder();
StringBuilder upper = new StringBuilder();
for (char ch : str.toCharArray()) {
if (Character.isLowerCase(ch)) {
lower.append(ch);
} else if (Character.isUpperCase(ch)) {
upper.append(ch);
}
}
// Sort the lowercase and uppercase letters
char[] lowerChars = lower.toString().toCharArray();
char[] upperChars = upper.toString().toCharArray();
Arrays.sort(lowerChars);
Arrays.sort(upperChars);
// Merge the sorted lowercase and uppercase letters alternately
int i = 0, j = 0;
while (i < lowerChars.length || j < upperChars.length) {
if (i < lowerChars.length) {
sorted.append(lowerChars[i++]);
}
if (j < upperChars.length) {
sorted.append(upperChars[j++]);
}
}
return sorted.toString();
}
}
但是我并没有正确理解所有文本情况
Proposed grade: 37.50 / 100
Result Description
Failed tests
Test 2: string sort testcase2
Test 3: string sort testcase1
Test 4: string sort testcase4
Test 5: string sort testcase5
Test 6: string sort testcase6
Test 1: string sort testcase3
Summary of tests
*Note: All the test cases might not have same weightage
+------------------------------+
| 8 tests run/ 3 tests passed |
+------------------------------+
这个程序的答案应该是什么,还是我的方法完全错误?
@OneCrickeer 的评论是正确的。更改最后一个 while 循环以首先开始附加大写字母。
while (i < lowerChars.length || j < upperChars.length) {
if (j < upperChars.length) {
sorted.append(upperChars[j++]);
}
if (i < lowerChars.length) {
sorted.append(lowerChars[i++]);
}
}