使用递归移动字符串末尾的所有数字

时间:2017-10-08 16:31:12

标签: java string recursion

我的代码给了我输出#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;
 }

3 个答案:

答案 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;
 }
相关问题