File tree Expand file tree Collapse file tree 1 file changed +7
-20
lines changed Expand file tree Collapse file tree 1 file changed +7
-20
lines changed Original file line number Diff line number Diff line change 5
5
*/
6
6
7
7
class EvaluateReversePolishNotation {
8
- func evalRPN( tokens: [ String ] ) -> Int {
8
+ func evalRPN( _ tokens: [ String ] ) -> Int {
9
9
var stack = [ Int] ( )
10
10
11
- for str in tokens {
12
- if _isNumber ( str ) {
13
- stack. append ( Int ( str ) ! )
11
+ for token in tokens {
12
+ if let num = Int ( token ) {
13
+ stack. append ( num )
14
14
} else {
15
- guard stack. count > 1 else {
16
- return 0
17
- }
18
-
19
15
let post = stack. removeLast ( )
20
16
let prev = stack. removeLast ( )
21
17
22
- let res = _operate ( prev, post, str)
23
- stack. append ( res)
18
+ stack. append ( operate ( prev, post, token) )
24
19
}
25
20
}
26
21
27
- if stack. count == 0 {
28
- return 0
29
- } else {
30
- return stack. first!
31
- }
32
- }
33
-
34
- private func _isNumber( str: String ) -> Bool {
35
- return Int ( str) != nil
22
+ return stack. first ?? 0
36
23
}
37
24
38
- private func _operate( prev: Int , _ post: Int , _ token: String ) -> Int {
25
+ fileprivate func _operate( _ prev: Int , _ post: Int , _ token: String ) -> Int {
39
26
switch token {
40
27
case " + " :
41
28
return prev + post
You can’t perform that action at this time.
0 commit comments