leetcode227基本的な電卓

1個の末端として「」逆ポーランド記法への最初のシンボル・スタックを使用して、そして加えます。

スタック2は、ポーランドの式の値の逆数を用いて計算されます。

 

クラス解決{
 パブリックint型の計算(文字列s_mid){ 
        unordered_map < チャーINT > M = {{ ' + '1 }、{ ' - '1 }、{ ' * '2 }、{ ' / '2 }}; 
        スタック < チャー > S;
         文字列s_reは、
        
        // 逆ポーランド記法を回す
        ためINT I =0 ; iがs_mid.sizeを<(); iが++ ){
             チャー C = s_mid [I]。
            もし(C == '  '続けますもし(<= C ' 9 ' && C> = ' 0 ' ){
                 ながら(iはs_mid.size()&& s_midを<I <= ' 9 ' && s_mid [I]> = ' 0 ' ){ 
                    C = s_mid [私]; 
                    s_re.push_back(C); 
                    I ++ ;
                s_re.push_back(' ' ); 
                I - ;
                続け; 
            } であれば(s.empty()){ 
                s.push(C); 
            } {
                 ながら(!s.empty()&& M [s.top()]> = M [C]){ 
                    s_re.push_back(s.top())。
                    s.pop(); 
                } 
                s.push(C); 
            } 
        } ながら(!s.empty()){ 
            s_re.push_back(s.top())。
            s.pop(); 
        } // COUT << s_re << ENDL。
            
        
        
         // 出力はポーランド記法逆
         // 逆ポーランド表情評価値と、 
        スタック< INT > RES;
         のためint型 I = 0 ;私は(s_re.sizeを<); I ++は){
             チャー C = s_re [I];
             IF(C == '  '続行;
             IF(C <= ' 9 ' && C => ' 0 ' ){
                 int型 NUM = 0 ;
                 一方、(I)は、(s_re.sizeを<&& s_re [i]は!= "
                    C = s_re [I]。
                    NUM = NUM * 10 +(C- ' 0 ' )。
                    I ++ ; 
                } 
                res.push(NUM)。続け; 
            } int型、B、和= 0 
            B = res.top(); res.pop()。= res.top();()res.pop。
            もし(C == ' + ' 
                の合計 = A + B。
            それ以外の場合 '){
                
            
             (C == ' - ' 
                の合計 = A- B。
            それ以外の 場合(C == ' * ' 
                合計は、 *の= Bを、
            それ以外の 場合(C == ' / ' 
                の合計 = A / B; 
            res.push(合計)。
        } 
        戻りres.top()。
    } 
}。

おすすめ

転載: www.cnblogs.com/joelwang/p/11013256.html