题目链接:力扣
思路:用栈来模拟操作就可以了。注意:留意下 “+” 的操作。
上代码:
class Solution {
fun calPoints(ops: Array<String>): Int {
val mStack = Stack<Int>()
var result = 0
ops.forEach { str ->
when (str) {
"+" -> {
val tmp1 = mStack.pop()
val tmp2 = mStack.pop()
mStack.push(tmp2)
mStack.push(tmp1)
mStack.push(tmp1 + tmp2)
}
"D" -> mStack.push(mStack.peek() * 2)
"C" -> mStack.pop()
else -> mStack.push(str.toInt())
}
}
while (mStack.isNotEmpty()) {
result += mStack.pop()
}
return result
}
}