首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我使用递归按字母顺序获取第一个字符串的java代码给出了不正确的输出。我需要添加一个辅助方法吗?

是的,您可以添加一个辅助方法来解决这个问题。在递归方法中,您可以通过传递两个参数:当前字符串和已排序字符串,来逐步构建已排序字符串。以下是一个可能的解决方案:

代码语言:txt
复制
public class StringSort {
    public static String sortString(String str) {
        return sortStringRec(str, "");
    }

    private static String sortStringRec(String str, String sortedStr) {
        if (str.length() == 0) {
            return sortedStr;
        }

        char smallestChar = getSmallestChar(str);
        String remainingStr = removeChar(str, smallestChar);
        sortedStr += smallestChar;

        return sortStringRec(remainingStr, sortedStr);
    }

    private static char getSmallestChar(String str) {
        char smallestChar = str.charAt(0);
        for (int i = 1; i < str.length(); i++) {
            if (str.charAt(i) < smallestChar) {
                smallestChar = str.charAt(i);
            }
        }
        return smallestChar;
    }

    private static String removeChar(String str, char c) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) != c) {
                sb.append(str.charAt(i));
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        String input = "recursion";
        String sortedString = sortString(input);
        System.out.println(sortedString);  // 输出:ceinorrsu
    }
}

在这个代码中,sortString 方法是公共方法,用于调用递归辅助方法 sortStringRecsortStringRec 方法使用递归来按字母顺序构建已排序字符串。getSmallestChar 方法用于获取给定字符串中的最小字符,removeChar 方法用于移除给定字符。通过递归调用 sortStringRec 方法,每次选择并添加最小的字符,直到字符串为空,最终得到已排序的字符串。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券