File tree 3 files changed +120
-0
lines changed
3 files changed +120
-0
lines changed Original file line number Diff line number Diff line change @@ -199,6 +199,47 @@ function calculate(s: string): number {
199
199
}
200
200
```
201
201
202
+ ``` swift
203
+ class Solution {
204
+ func calculate (_ s : String ) -> Int {
205
+ let n = s.count
206
+ var x = 0
207
+ var sign: Character = " +"
208
+ var stk = [Int ]()
209
+ let sArray = Array (s)
210
+
211
+ for i in 0 ..< n {
212
+ let c = sArray[i]
213
+ if c.isNumber {
214
+ x = x * 10 + Int (String (c))!
215
+ }
216
+ if i == n - 1 || (! c.isNumber && c != " " ) {
217
+ switch sign {
218
+ case " +" :
219
+ stk.append (x)
220
+ case " -" :
221
+ stk.append (- x)
222
+ case " *" :
223
+ if let last = stk.popLast () {
224
+ stk.append (last * x)
225
+ }
226
+ case " /" :
227
+ if let last = stk.popLast () {
228
+ stk.append (last / x)
229
+ }
230
+ default :
231
+ break
232
+ }
233
+ x = 0
234
+ sign = c
235
+ }
236
+ }
237
+
238
+ return stk.reduce (0 , + )
239
+ }
240
+ }
241
+ ```
242
+
202
243
<!-- tabs: end -->
203
244
204
245
<!-- end -->
Original file line number Diff line number Diff line change @@ -209,6 +209,47 @@ function calculate(s: string): number {
209
209
}
210
210
```
211
211
212
+ ``` swift
213
+ class Solution {
214
+ func calculate (_ s : String ) -> Int {
215
+ let n = s.count
216
+ var x = 0
217
+ var sign: Character = " +"
218
+ var stk = [Int ]()
219
+ let sArray = Array (s)
220
+
221
+ for i in 0 ..< n {
222
+ let c = sArray[i]
223
+ if c.isNumber {
224
+ x = x * 10 + Int (String (c))!
225
+ }
226
+ if i == n - 1 || (! c.isNumber && c != " " ) {
227
+ switch sign {
228
+ case " +" :
229
+ stk.append (x)
230
+ case " -" :
231
+ stk.append (- x)
232
+ case " *" :
233
+ if let last = stk.popLast () {
234
+ stk.append (last * x)
235
+ }
236
+ case " /" :
237
+ if let last = stk.popLast () {
238
+ stk.append (last / x)
239
+ }
240
+ default :
241
+ break
242
+ }
243
+ x = 0
244
+ sign = c
245
+ }
246
+ }
247
+
248
+ return stk.reduce (0 , + )
249
+ }
250
+ }
251
+ ```
252
+
212
253
<!-- tabs: end -->
213
254
214
255
<!-- end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func calculate( _ s: String ) -> Int {
3
+ let n = s. count
4
+ var x = 0
5
+ var sign : Character = " + "
6
+ var stk = [ Int] ( )
7
+ let sArray = Array ( s)
8
+
9
+ for i in 0 ..< n {
10
+ let c = sArray [ i]
11
+ if c. isNumber {
12
+ x = x * 10 + Int( String ( c) ) !
13
+ }
14
+ if i == n - 1 || ( !c. isNumber && c != " " ) {
15
+ switch sign {
16
+ case " + " :
17
+ stk. append ( x)
18
+ case " - " :
19
+ stk. append ( - x)
20
+ case " * " :
21
+ if let last = stk. popLast ( ) {
22
+ stk. append ( last * x)
23
+ }
24
+ case " / " :
25
+ if let last = stk. popLast ( ) {
26
+ stk. append ( last / x)
27
+ }
28
+ default :
29
+ break
30
+ }
31
+ x = 0
32
+ sign = c
33
+ }
34
+ }
35
+
36
+ return stk. reduce ( 0 , + )
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments