File tree Expand file tree Collapse file tree 3 files changed +120
-0
lines changed
Expand file tree Collapse file tree 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 {
199199}
200200```
201201
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+
202243<!-- tabs: end -->
203244
204245<!-- end -->
Original file line number Diff line number Diff line change @@ -209,6 +209,47 @@ function calculate(s: string): number {
209209}
210210```
211211
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+
212253<!-- tabs: end -->
213254
214255<!-- 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