问题需要对由小写字母和大写字母组成的字符串进行排序

问题描述 投票:0回答:1

取一个由小写和大写字母组成的字符串,并以大写和小写字母交替出现但按排序的方式对其进行排序。

输入字符串: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 |
+------------------------------+

这个程序的答案应该是什么,还是我的方法完全错误?

java string
1个回答
0
投票

@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++]);
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.