繁体   English   中英

使用递归将所有数字移到字符串末尾

[英]Move all the digits at the end of string using 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;
 }

是否需要保留订单或将其排序。 如果只是要保留的顺序,则删除排序并直接添加str2。

下面给出了排序代码

public String replaceD(String str, String str1, String str2){
         String strtemp1="";
         String strtemp2="";

         if(str.length() == 0){
             String k[] = str2.split("");
             Arrays.sort(k)
             str2=""
             for (int i = 0; i < k.length; i++) {
                 str2+=k[i];
             }
         return str1+str2;
         }

         char ch = str.charAt(0);
         if(ch >= '0' && ch <= '9'){
             str1 = str1 + ch;
         }
         else{
             str2 = str2 + ch;
         } 

    return replaceD(str.substring(1),str1+strtemp1, str2+strtemp2);
    }

使用递归

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);
    }
     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;
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM