我的代码给了我输出#check ## done654321 但我希望使用递归来“#check ## done123456”。输入字符串是replaceD(“123#check#456#done”)。 我该怎么做?有可能吗?
public String replaceD(String str){
String str1 = "";
String str2 = "";
if(str.length() == 0){
return "";
}
char ch = str.charAt(0);
if(ch >= '0' && ch <= '9'){
str1 = str1 + ch;
}
else{
str2 = str2 + ch;
}
return str2 + replaceD(str.substring(1))+str1;
}
答案 0 :(得分:0)
是否需要保留订单或是否需要对订单进行排序。如果它只是要保留的顺序,那么删除排序并直接添加str2。
下面给出的排序代码
+-----------------------------+
| ID Weight seq id test test2 |
+-----------------------------+
| 36 139 33 36 45 19 |
| 36 139 33 36 23 24 |
| 53 150 91 53 20 23 |
| 58 180 34 58 90 12 |
+-----------------------------+
答案 1 :(得分:0)
使用递归
public static void usingRecursion(String str){
System.out.println(replaceD_2(str, ""));
}
private static String replaceD_2(String str, String str2){
String str1 = "";
if(str.length() == 0){
return str2;
}
if(str.charAt(0) >= '0' && str.charAt(0) <= '9'){
str2 = str2 + str.charAt(0);
}
else {
str1 = str1 + str.charAt(0);
}
return str1 + replaceD_2(str.substring(1), str2);
}
使用迭代
public static void main(String[] args) {
String input = ScannerUtils.scanForString();
StringBuilder digitBuilder = new StringBuilder();
StringBuilder charBuilder = new StringBuilder();
for(int i = 0; i< input.length(); i++){
if(input.charAt(i) >= '0' && input.charAt(i) <= '9'){
digitBuilder.append(input.charAt(i));
}
else {
charBuilder.append(input.charAt(i));
}
}
String output = charBuilder.toString().concat(digitBuilder.toString());
System.out.println(output);
}
答案 2 :(得分:0)
public String replaceD(String str){
String str1 = "";
String str2 = "";
if(str.length() == 0){
return "";
}
int l = str.length();
char ch = str.charAt(l-1);
if(ch >= '0' && ch <= '9'){
str1 = str1 + ch;
}
else{
str2 = str2 + ch;
}
return replaceD(str.substring(0,l-1))+str2+str1;
}