Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func calculate(_ s: String) -> Int {
- let arr = Array(s)
- var sum = 0
- var stack = [Int]()
- var i = 0
- var preSign:Character = "+"
- while i < arr.count{
- if arr[i] == " " {
- i += 1
- continue
- }
- if isDigit(arr[i]){
- let start = i
- while i < arr.count && isDigit(arr[i]){
- i += 1
- }
- let integer = Int(String(arr[start ..< i]))!
- switch preSign{
- case "+":
- stack.append(integer)
- case "-":
- stack.append( -integer)
- case "*":
- stack.append(stack.removeLast() * integer)
- case "/":
- stack.append(stack.removeLast() / integer)
- default:
- print()
- }
- } else{
- preSign = arr[i]
- i += 1
- }
- }
- while stack.count > 0 {
- sum += stack.removeLast()
- }
- return sum
- }
- func isDigit(_ char: Character) -> Bool{
- if char >= "0" && char <= "9" {return true}
- return false
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement