前言
一个多月没有更新了。
正文
问题来源
本问题来自leetcode上的227题。
问题描述
实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式仅包含非负整数,+, - ,*,/
四种运算符和空格。 整数除法仅保留整数部分。
示例 1:
输入: "3+2*2"
输出: 7
示例 2:
输入: " 3/2 "
输出: 1
示例 3:
输入: " 3+5 / 2 "
输出: 5
分析:
自己的代码
func calculate(s string) int {
stack := make([]int, 0)
num := 0
var op uint8 = '+'
ret := 0
for i := 0; i < len(s); i++ {
if s[i] >= '0' && s[i] <= '9' {
num = num * 10 + int(s[i] - '0')
}
if i == len(s) -1 || ((s[i] < '0' || s[i] > '9') && s[i] != ' ') {
c := s[i]
if op == '+' {
stack = append(stack, num)
}
if op == '-' {
stack = append(stack, -num)
}
if op == '*' {
num0 := stack[len(stack)-1]
stack[len(stack)-1] = num0*num
}
if op == '/' {
num0 := stack[len(stack)-1]
stack[len(stack)-1] = num0/num
}
num = 0
op = c
}
}
for i := 0; i < len(stack); i++ {
ret += stack[i]
}
return ret
}
总结:
勤思考。
结语
不管怎么样好好加油。