首页
学习
活动
专区
工具
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 方法,每次选择并添加最小的字符,直到字符串为空,最终得到已排序的字符串。

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

相关·内容

字符串匹配

问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 输入格式   输入的第一行包含一个字符串S,由大小写英文字母组成。   第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。   第三行包含一个整数n,表示给出的文字的行数。   接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。 输出格式   输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。 样例输入 Hello 1 5 HelloWorld HiHiHelloHiHi GrepIsAGreatTool HELLO HELLOisNOTHello 样例输出 HelloWorld HiHiHelloHiHi HELLOisNOTHello 样例说明   在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。 评测用例规模与约定   1<=n<=100,每个字符串的长度不超过100。

01

字符串排序----高位优先的字符串排序

上一篇:低位优先的字符串排序 高位优先字符串排序是一种递归算法,它从左到右遍历字符串的字符进行排序。和快速排序一样,高位优先字符串排序算法会将数组切分为能够独立进行排序的子数组进行排序,但它的切分会为每个首字母得到一个子数组,而非像快排那样产生固定的两个或三个数组。 本算法也是基于键索引记数法来实现的。该算法的核心思想是先使用键索引记数法根据首字符划分成不同的子数组,然后递归地处理子数组,用下一个字符作为键索引记数法的键处理子数组。 因为是不同长度的字符串,所以要关注字符串末尾的处理情况。合理的做法是将所有

01
领券