File tree Expand file tree Collapse file tree 2 files changed +101
-0
lines changed
Expand file tree Collapse file tree 2 files changed +101
-0
lines changed Original file line number Diff line number Diff line change @@ -329,6 +329,59 @@ public class Solution {
329329}
330330```
331331
332+ #### Swift
333+
334+ ``` swift
335+ class Solution {
336+ func isNumber (_ s : String ) -> Bool {
337+ let chars = Array (s)
338+ var i = 0 , j = chars.count - 1
339+
340+ // Trim leading spaces
341+ while i <= j && chars[i] == " " {
342+ i += 1
343+ }
344+ // Trim trailing spaces
345+ while i <= j && chars[j] == " " {
346+ j -= 1
347+ }
348+ if i > j {
349+ return false
350+ }
351+
352+ var digit = false
353+ var dot = false
354+ var e = false
355+
356+ while i <= j {
357+ let char = chars[i]
358+ if char == " +" || char == " -" {
359+ if i > 0 && chars[i - 1 ] != " " && chars[i - 1 ] != " e" && chars[i - 1 ] != " E" {
360+ return false
361+ }
362+ } else if char.isWholeNumber {
363+ digit = true
364+ } else if char == " ." {
365+ if dot || e {
366+ return false
367+ }
368+ dot = true
369+ } else if char == " e" || char == " E" {
370+ if ! digit || e {
371+ return false
372+ }
373+ e = true
374+ digit = false
375+ } else {
376+ return false
377+ }
378+ i += 1
379+ }
380+ return digit
381+ }
382+ }
383+ ```
384+
332385<!-- tabs: end -->
333386
334387<!-- solution: end -->
Original file line number Diff line number Diff line change 1+ class Solution {
2+ func isNumber( _ s: String ) -> Bool {
3+ let chars = Array ( s)
4+ var i = 0 , j = chars. count - 1
5+
6+ // Trim leading spaces
7+ while i <= j && chars [ i] == " " {
8+ i += 1
9+ }
10+ // Trim trailing spaces
11+ while i <= j && chars [ j] == " " {
12+ j -= 1
13+ }
14+ if i > j {
15+ return false
16+ }
17+
18+ var digit = false
19+ var dot = false
20+ var e = false
21+
22+ while i <= j {
23+ let char = chars [ i]
24+ if char == " + " || char == " - " {
25+ if i > 0 && chars [ i - 1 ] != " " && chars [ i - 1 ] != " e " && chars [ i - 1 ] != " E " {
26+ return false
27+ }
28+ } else if char. isWholeNumber {
29+ digit = true
30+ } else if char == " . " {
31+ if dot || e {
32+ return false
33+ }
34+ dot = true
35+ } else if char == " e " || char == " E " {
36+ if !digit || e {
37+ return false
38+ }
39+ e = true
40+ digit = false
41+ } else {
42+ return false
43+ }
44+ i += 1
45+ }
46+ return digit
47+ }
48+ }
You can’t perform that action at this time.
0 commit comments