From 77b31bb0caaca95080c29844098f6bbb0e7f75b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=81=E5=AE=A2=E5=AD=A6=E4=BC=9F?= Date: Tue, 30 Nov 2021 14:07:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20150.=20=E9=80=86=E6=B3=A2?= =?UTF-8?q?=E5=85=B0=E8=A1=A8=E8=BE=BE=E5=BC=8F=E6=B1=82=E5=80=BC=20Swift?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0150.逆波兰表达式求值.md | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) 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! +} +``` -----------------------