Posted on 2014-01-11 02:51
Uriel 閱讀(145)
評論(0) 編輯 收藏 引用 所屬分類:
LeetCode
一天遇到兩次一樣的題簡直...要是能在之前一天能做一下這題多好,就不至于當時題目問了幾遍才明白...
給出逆波蘭式,求算式的值,模擬棧,乘除的時候注意出棧順序!和算式的操作數順序相反!下午就死在這上面了...
1 class Solution {
2 public:
3 int evalRPN(vector<string> &tokens) {
4 int stk[1010], k = 0;
5 for(int i = 0; i < tokens.size(); ++i) {
6 if(tokens[i] == "+") {
7 int a = stk[k - 1], b = stk[k - 2];
8 k -= 2;
9 stk[k++] = a + b;
10 }
11 else if(tokens[i] == "-") {
12 int a = stk[k - 1], b = stk[k - 2];
13 k -= 2;
14 stk[k++] = b - a;
15 }
16 else if(tokens[i] == "*") {
17 int a = stk[k - 1], b = stk[k - 2];
18 k -= 2;
19 stk[k++] = b * a;
20 }
21 else if(tokens[i] == "/") {
22 int a = stk[k - 1], b = stk[k - 2];
23 k -= 2;
24 stk[k++] = b / a;
25 }
26 else {
27 stk[k++] = atoi(tokens[i].c_str());
28 }
29 }
30 return stk[0];
31 }
32 };