如何在Java中使用递归对仅由两个不同字符组成的字符串进行排序?

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

所以,我的问题就在标题中。唯一允许的方法是 length()、isEmpty()、charAt() 和 substring()。我们不能使用任何新方法,不能使用循环或数组

public class sortedString {

    private static String orderCharGroups(String text) {
        if (text.isEmpty()){
            return "";
        }

        char smallerChar = text.charAt(0);

        if(text.charAt(0) == smallerChar){
            return smallerChar + orderCharGroups(text.substring(1));
        } else {
         return orderCharGroups(text.substring(1)) + smallerChar;
        }
    }

    public static void main(String[] args) {

        System.out.println(orderCharGroups(""));
        System.out.println(orderCharGroups("1"));
        System.out.println(orderCharGroups("12"));
        System.out.println(orderCharGroups("1212"));
        System.out.println(orderCharGroups("abbaaababbaa"));
        System.out.println(orderCharGroups("ABBA"));
        System.out.println(orderCharGroups("11221122"));
        System.out.println(orderCharGroups("AAAAAA"));
        System.out.println();

    }
}

问题是较小的字符在每次迭代时都会更新,所以它只是返回我的字符串。我怎样才能让这个smallerChar不被更新?

java string recursion
1个回答
0
投票

您正在将一个角色与其自身进行比较。将比较更改为更小的字符,如下所示:

私有静态字符串 orderCharGroups(字符串文本) { if (text.isEmpty()){ 返回 ””; }

    char smallerChar = text.charAt(0);

    if(text.charAt(1) >= smallerChar){
        return smallerChar + orderCharGroups(text.substring(1));
    } else {
     return orderCharGroups(text.substring(1)) + smallerChar;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.