leetcode 227 簡單計算器
阿新 • • 發佈:2021-10-03
正常計算器的計算形式。首先需要注意的是將連續的數字轉換成數。第二點是棧中只維護數,而若出現減法,則即為-n,若出現乘除,則只對棧頂元素進行操作。最後把棧中所有元素相加即可,貼程式碼
1 class Solution { 2 public: 3 int calculate(string s) { 4 vector<int> stk; 5 char preSign = '+'; 6 int num = 0; 7 int n = s.length(); 8 for (int i = 0; i < n; ++i)9 { 10 if (isdigit(s[i])) 11 { 12 num = num * 10 + int(s[i] - '0'); 13 } 14 if (!isdigit(s[i]) && s[i] != ' ' || i == n - 1) 15 { 16 switch (preSign) 17 { 18 case'+': 19 stk.push_back(num); 20 break; 21 case '-': 22 stk.push_back(-num); 23 break; 24 case '*': 25 stk.back() *= num; 26 break; 27 default: 28 stk.back() /= num; 29 } 30 preSign = s[i]; 31 num = 0; 32 } 33 } 34 return accumulate(stk.begin(), stk.end(), 0); 35 } 36 };