leetcode227基本计算器II

leetcode227 Basic Calculator II

Posted by BY on August 22, 2019

前言

一个多月没有更新了。

正文

问题来源

本问题来自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
}

总结:

勤思考。

结语

不管怎么样好好加油。