1. 程式人生 > 其它 >leetcode 227 簡單計算器

leetcode 227 簡單計算器

正常計算器的計算形式。首先需要注意的是將連續的數字轉換成數。第二點是棧中只維護數,而若出現減法,則即為-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 };