Advertisement
HXXXXJ

227. Basic Calculator II

Apr 2nd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.35 KB | None | 0 0
  1. func calculate(_ s: String) -> Int {
  2.         let arr = Array(s)
  3.        
  4.         var sum = 0
  5.         var stack = [Int]()
  6.        
  7.         var i = 0
  8.         var preSign:Character = "+"
  9.        
  10.         while i < arr.count{
  11.             if arr[i] == " " {
  12.                 i += 1
  13.                 continue
  14.             }
  15.             if isDigit(arr[i]){
  16.                 let start = i
  17.                 while i < arr.count && isDigit(arr[i]){
  18.                     i += 1
  19.                 }
  20.                 let integer = Int(String(arr[start ..< i]))!
  21.                 switch preSign{
  22.                     case "+":
  23.                         stack.append(integer)
  24.                     case "-":
  25.                         stack.append( -integer)
  26.                     case "*":
  27.                         stack.append(stack.removeLast() * integer)
  28.                     case "/":
  29.                         stack.append(stack.removeLast() / integer)
  30.                     default:
  31.                         print()
  32.                 }
  33.             } else{
  34.                 preSign = arr[i]
  35.                 i += 1
  36.             }
  37.         }
  38.        
  39.         while stack.count > 0 {
  40.             sum += stack.removeLast()
  41.         }
  42.         return sum
  43.     }
  44.     func isDigit(_ char: Character) -> Bool{
  45.         if char >= "0" && char <= "9" {return true}
  46.         return false
  47.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement