diff --git a/problems/0150.逆波兰表达式求值.md b/problems/0150.逆波兰表达式求值.md index ef91330d..137aaf5d 100644 --- a/problems/0150.逆波兰表达式求值.md +++ b/problems/0150.逆波兰表达式求值.md @@ -241,6 +241,38 @@ class Solution: ``` +Swift: +```Swift +func evalRPN(_ tokens: [String]) -> Int { + var stack = [Int]() + for c in tokens { + let v = Int(c) + if let num = v { + // 遇到数字直接入栈 + stack.append(num) + } else { + // 遇到运算符, 取出栈顶两元素计算, 结果压栈 + var res: Int = 0 + let num2 = stack.popLast()! + let num1 = stack.popLast()! + switch c { + case "+": + res = num1 + num2 + case "-": + res = num1 - num2 + case "*": + res = num1 * num2 + case "/": + res = num1 / num2 + default: + break + } + stack.append(res) + } + } + return stack.last! +} +``` -----------------------