所以,我的问题就在标题中。唯一允许的方法是 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不被更新?
您正在将一个角色与其自身进行比较。将比较更改为更小的字符,如下所示:
私有静态字符串 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;
}
}