欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

題解 | #四則運算#

四則運算

http://www.fangfengwang8.cn/practice/9999764a61484d819056f807d2a91f1e

import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

// 注意類名必須為 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的區(qū)別
        while (in.hasNextLine()) { // 注意 while 處理多個 case
            String s = in.nextLine();
            s = s.replace('[', '(');
            s = s.replace('{', '(');
            s = s.replace(']', ')');
            s = s.replace('}', ')');
            //System.out.println(s);
            Deque<Integer> numbers = new LinkedList<>();
            Deque<Character> operators = new LinkedList<>();
            int n = s.length();


            //變換表達式形式 有0的情況3+2*{1+2*[(0-4)/(8-6)+7]}
            StringBuffer ss = new StringBuffer();
            for (int i = 0 ; i < n ; ++i) {
                
                if (s.charAt(i) == '-') {
                    if (i == 0 || s.charAt(i - 1) == '(') {
                        ss.append("(0-");
                        ++i;
                        if (s.charAt(i) == '(') {
                            //這里應該再做一些處理,比如說-((3*2)-1))的情況,這里可以對括號進行計數(shù),然后遇到最終的)才返回,但是這里用例情況沒有考慮
                            while (s.charAt(i) != ')') {
                                ss.append(s.charAt(i));
                                ++i;
                            }
                            ss.append(')');

                        } else {
                            while(i < n && s.charAt(i) >= '0' && s.charAt(i) <= '9'){
                                ss.append(s.charAt(i));
                                ++i;
                            }
                            ss.append(')');
                            --i;
                        }
                    }
                    else{
                        ss.append('-');
                    }
                }
                else{
                    ss.append(s.charAt(i));
                }

            }
            //System.out.println(ss.toString());
            s = ss.toString();
            n=s.length();

            for (int i = 0 ; i < n ; ++i) {
                StringBuffer sb = new StringBuffer();

                while (i < n && s.charAt(i) >= '0' && s.charAt(i) <= '9') {
                    sb.append(s.charAt(i));
                    ++i;
                    //System.out.println(s.charAt(i));
                }
                //System.out.println(sb.toString());

                if (sb.length() > 0) {

                    numbers.push(Integer.valueOf(sb.toString()));

                }


                if (i < n) {
                    char op = s.charAt(i);
                    if (op == '(') {
                        operators.push(op);
                    }

                    else if (op == '+' || op == '-') {
                        if (operators.isEmpty()) {
                            operators.push(op);
                            continue;
                        }
                        char opPeak = operators.peek();
                        while (!operators.isEmpty() && operators.peek() != '(') {
                            int a = numbers.pop();
                            int b = numbers.pop();
                            if (opPeak == '*') {
                                numbers.push(a * b);
                            }
                            if (opPeak == '/') {
                                numbers.push(b / a);
                            }
                            if (opPeak == '+') {
                                numbers.push(b + a);
                            }
                            if (opPeak == '-') {
                                numbers.push(b - a);
                            }
                            operators.pop();
                            if (operators.isEmpty()) {
                                break;
                            }
                            opPeak = operators.peek();

                        }
                        operators.push(op);
                    }

                    else if (op == '*' || op == '/') {
                        operators.push(op);
                    } else {
                        while (operators.peek() != '(') {
                            char opPeak = operators.pop();

                            int a = numbers.pop();
                            int b = numbers.pop();
                            //System.out.println(a+" "+b);
                            //System.out.println(numbers);
                            //System.out.println(operators);
                            if (opPeak == '+') {
                                numbers.push(a + b);
                            } else if (opPeak == '-') {
                                numbers.push(b - a);
                            } else if (opPeak == '*') {
                                numbers.push(a * b);
                            } else {
                                numbers.push(b / a);
                            }


                        }
                        operators.pop(); //把左括號出棧
                    }
                }

            }

            while (!operators.isEmpty()) {
                int a = numbers.pop();
                int b = numbers.pop();
                char op = operators.pop();
                if (op == '+') {
                    numbers.push(a + b);
                } else if (op == '-') {
                    numbers.push(b - a);
                } else if (op == '*') {
                    numbers.push(a * b);
                } else {
                    numbers.push(b / a);
                }
            }
            System.out.println(numbers.peek());
        }
    }
}

全部評論

相關推薦

點贊 評論 收藏
分享
03-28 19:11
銅陵學院 C++
有禮貌的山羊追趕太陽:太典了,連筆試都沒有開始就因為HC滿了而結束了,而且還卡你不讓你再投其他部門的。
點贊 評論 收藏
分享
評論
點贊
收藏
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
??推髽I(yè)服務