重新排列字符串

时间:2018-08-08 08:07:42

标签: java string

例如-

  • input1 String ="2a[2b[c]]",然后输出应为“ abcbcabcbc

  • input2 String ="2a[b[c]]",然后输出应为“ abcabc

import java.util.*;
class a {

    public static void main(String[] args) {
        String s = "2a[2b[c]]]";
        // o/p = abcbcabcbc  
        Stack s1 = new Stack();
        for(int i=0;i<s.length();i++) {
            s1.push(s.charAt(i));
        }
        String str="";
        String sss="";
        for(int j=0;j<s.length();j++) {
            char a = (char)s1.pop();
            // if(a == '')
            if((int)a >=49 && (int)a<=58){
                for(int i=0;i<(int)a-48;i++){
                    sss+=str;
                    System.out.println(sss);
                }
            }
            else if((int)a >=97 && (int)a <= 122){
                  str = a + str;
                  System.out.println(str);
            }
        }
        System.out.println(sss);
    }
}

但是我的输出显示为“ bcbcabcabc”。

1 个答案:

答案 0 :(得分:0)

在执行sss+=str;之前,请添加sss=str;。 您忘记更新您的sss

public static void main(String[] args) {
        String s = "2a[2b[c]]]";         
        Stack s1 = new Stack();
        for(int i=0;i<s.length();i++) {
            s1.push(s.charAt(i));
        }
        String str="";
        String sss="";
        for(int j=0;j<s.length();j++) {
            char a = (char)s1.pop();
            System.out.println("a:"+a);
            // if(a == '')
            if((int)a >=49 && (int)a<=58){
                for(int i=0;i<(int)a-48;i++){
                    sss=str;
                    sss+=str;
                    System.out.println("sss:"+sss);
                }
                str=sss;
            }
            //character
            else if((int)a >=97 && (int)a <= 122){
                str = a + str;
                System.out.println("str:"+str);
            }
        }
        System.out.println(sss);
    }