@@ -26,61 +26,56 @@ using namespace std;
26
26
27
27
28
28
class Solution {
29
- #define ERROR err=false ;continue
30
29
public:
31
30
int evalRPN (vector<string> &tokens) {
32
31
int i =0 ;
33
32
bool err = false ;
34
33
vector<int > exp ;
35
34
for (int i=0 ; i<tokens.size () && !err; i++ ){
36
- if ( isOp (tokens[i])==true ) {
37
- if (exp .size () >= 2 ) {
38
- int lhs, rhs;
39
- rhs = exp .back ();
40
- exp .pop_back ();
41
- lhs = exp .back ();
42
- exp .pop_back ();
43
-
44
- int evlValue;
45
- if (tokens[i]==" +" ){
46
- evlValue = lhs + rhs;
47
- }else if (tokens[i]==" -" ){
48
- evlValue = lhs - rhs;
49
- }else if (tokens[i]==" *" ){
50
- evlValue = lhs * rhs;
51
- }else if (tokens[i]==" /" ){
52
- evlValue = lhs / rhs;
53
- }
54
-
55
- exp .push_back (evlValue);
56
-
57
- }else {
58
- ERROR;
59
- }
60
- }else if (isNum (tokens[i])) {
35
+ if (isNum (tokens[i])) {
61
36
exp .push_back (value);
37
+ } else if ( isOp (tokens[i])==true ) {
38
+ if (exp .size () < 2 ) {
39
+ return 0 ; // ERROR
40
+ }
41
+ int lhs, rhs;
42
+ rhs = exp .back ();
43
+ exp .pop_back ();
44
+ lhs = exp .back ();
45
+ exp .pop_back ();
46
+
47
+ int evlValue;
48
+ if (tokens[i]==" +" ){
49
+ evlValue = lhs + rhs;
50
+ }else if (tokens[i]==" -" ){
51
+ evlValue = lhs - rhs;
52
+ }else if (tokens[i]==" *" ){
53
+ evlValue = lhs * rhs;
54
+ }else if (tokens[i]==" /" ){
55
+ evlValue = lhs / rhs;
56
+ }
57
+
58
+ exp .push_back (evlValue);
59
+
62
60
}else {
63
- ERROR;
61
+ return 0 ; // ERROR
64
62
}
65
63
}
66
- if (err==true ){
67
- return 0 ;
68
- }
69
-
64
+
70
65
if (exp .size ()==1 ){
71
66
return exp .back ();
72
67
}
73
68
return 0 ;
74
-
69
+
75
70
}
76
-
71
+
77
72
private:
78
73
long value;
79
-
74
+
80
75
bool isOp (string &op) {
81
76
return (op==" +" || op==" -" || op==" *" || op==" /" );
82
77
}
83
-
78
+
84
79
bool isNum (string &num) {
85
80
char *end;
86
81
value = strtol (num.c_str (), &end, 10 );
@@ -97,7 +92,7 @@ int main()
97
92
Solution s;
98
93
char exps[5 ][3 ] = {" 42" , " 9" , " 6" , " -" , " +" };
99
94
vector<string> expression;
100
-
95
+
101
96
cout << " Expression: \n " ;
102
97
for (int i=0 ; i<5 ; i++){
103
98
expression.push_back (exps[i]);
0 commit comments