227. Basic Calculator II

問題

Implement a basic calculator to evaluate a simple expression string.

The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero.

You may assume that the given expression is always valid.

例子

"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5

分析

1 使用istringstream,將字符串變成字符流,自動(dòng)分割字符串并直接轉(zhuǎn)換成數(shù)字或字符
2 使用棧,保存表達(dá)式中的數(shù)字或者兩個(gè)數(shù)字*/的結(jié)果
3 遍歷棧,將棧元素依次相加即可得到表達(dá)式的計(jì)算結(jié)果

舉個(gè)例子,對(duì)于表達(dá)式3-5/2,首先初始化運(yùn)算符為+號(hào),即表達(dá)式變成+3-5/2;將+3壓入棧,-5壓入棧,發(fā)現(xiàn)下一個(gè)運(yùn)算符是/,將-5出棧,將-5/2=-2入棧。

要點(diǎn)

  • istringstream可以處理任意多空格分割的字符串
  • 用棧來保存上一步的數(shù)字
  • 用vector模擬棧

時(shí)間復(fù)雜度

O(n)

空間復(fù)雜度

O(n)

代碼

class Solution {
public:
    int calculate(string s) {
        vector<int> stk;
        istringstream iss(s);
        char op = '+';
        int res = 0, term;
        while (iss >> term) {
            if (op == '+' || op == '-') {
                stk.push_back(op == '+' ? term : -term);
            }
            else {
                int last = stk.back();
                stk.pop_back();
                stk.push_back(op == '*' ? last * term : last / term);
            }
            iss >> op;
        }
        for (int num : stk)
            res += num;
        return res;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Question Implement a basic calculator to evaluate a simpl...
    FlynnLWang閱讀 196評(píng)論 0 0
  • Implement a basic calculator to evaluate a simple express...
    matrxyz閱讀 190評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評(píng)論 18 139
  • Implement a basic calculator to evaluate a simple express...
    BeijingIamback閱讀 210評(píng)論 0 0
  • 2017年10月16日 星期一 多云 吃過晚飯,李云哲寫完作業(yè)后,二寶又也睡著了。我對(duì)李云哲說:“今晚...
    云哲云燦媽媽閱讀 123評(píng)論 0 0