クールな犬Tの質問:パディング左ブラケット(スタック)

説明:

//入力1 + 2)* 3-4)* 5-6)))
//出力((1 + 2)*((3-4)*(5-6)))

コード:

輸入 java.utilの。* ; 

パブリック クラスG {
     公共 静的 ボイドメイン(文字列[]引数){ 
        スキャナSC = 新しいスキャナ(System.in)。
        文字列str = sc.nextLine()(トリム)。
        文字列結果 = getfullstr(STR)。
        System.out.println(結果)。
    } 

    パブリック 静的文字列getfullstr(文字列str){ 
        スタックの<string>レフト= 新しいスタック<> (); 
        スタック <文字列>権利= 新しいスタック<> ();
        CHAR []文字の= str.toCharArray()。
        以下のためにint型 i = 0; iはchars.length <; iは++ ){
             チャーのC =の文字[I]。
            もし(C == '+' || C == ' - ' || C == '+' || C == '*' || C == '/' ){ 
                rights.add(C + "" ); 
            } そう なら(C == '')){ 
                文字列lstr1 = lefts.pop()。
                ストリングlstr2 = lefts.pop()。
                ストリングrstr1 = rights.pop()。
                lefts.add("(" + lstr2 + rstr1 + lstr1 + ")" )。
            } そう であれば(Character.isDigit(文字[I])){ 
                文字列NUM = C + "" 一方、((I + 1)<chars.length && Character.isDigit(文字[I + 1 ])){ 
                    NUM + = C。
                    I ++ ; 
                } 
                lefts.add(NUM)。
            } 
        } 
        一方(rights.size()> 0 ){ 
            文字列lstr1 = lefts.pop()。
            ストリングlstr2 = lefts.pop()。
            ストリングrstr1 = rights.pop()。
            lefts.add( "(" + lstr2 + rstr1 + lstr1 + ")" )。
        } 
        文字列結果 = "" ;
        一方、(lefts.size()> 0 ){ 
            結果 = lefts.pop()+ 結果。
        } 
        戻り値の結果; 
    } 
}

 

おすすめ

転載: www.cnblogs.com/haimishasha/p/11519417.html