是的,您可以添加一个辅助方法来解决这个问题。在递归方法中,您可以通过传递两个参数:当前字符串和已排序字符串,来逐步构建已排序字符串。以下是一个可能的解决方案:
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
方法是公共方法,用于调用递归辅助方法 sortStringRec
。sortStringRec
方法使用递归来按字母顺序构建已排序字符串。getSmallestChar
方法用于获取给定字符串中的最小字符,removeChar
方法用于移除给定字符。通过递归调用 sortStringRec
方法,每次选择并添加最小的字符,直到字符串为空,最终得到已排序的字符串。
领取专属 10元无门槛券
手把手带您无忧上云