zoukankan      html  css  js  c++  java
  • leetcode刷题笔记 227题 基本计算器II

    leetcode刷题笔记 227题 基本计算器II

    源地址:227. 基本计算器 II

    问题描述:

    实现一个基本的计算器来计算一个简单的字符串表达式的值。

    字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。

    示例 1:

    输入: "3+2*2"
    输出: 7
    示例 2:

    输入: " 3/2 "
    输出: 1
    示例 3:

    输入: " 3+5 / 2 "
    输出: 5
    说明:

    你可以假设所给定的表达式都是有效的。
    请不要使用内置的库函数 eval。

    //与224题思路一致 注意分割符号与数字
    //默认符号为+
    //以 3 + 2 * 5 为例转换为 +3+2*5 转换为 3+ 2+ 5*
    //通过sign计算上一个符号
    import scala.collection.mutable
    object Solution {
        def calculate(s: String): Int = {
            //变量定义
            val stack = new mutable.Stack[Int]()
            var operand = 0
            var res = 0
            var sign = '+'
            //去除空格
            val str = s.replace(" ", "")
            
            for (i <- 0 to str.length-1) {
                val ch = str.charAt(i)
                if (ch.isDigit == true) {
                    operand = operand * 10 + (ch - '0').toInt
                }
                if (ch.isDigit == false || i == str.length-1) { 
                    //println("operand: " + operand)
                    if (sign == '+') stack.push(operand)
                    if (sign == '-') stack.push(operand * (-1))
                    if (sign == '*') {
                        stack.push(stack.pop() * operand)
                    }
                    if (sign == '/') {
                        stack.push(stack.pop() / operand)
                    }
                    operand = 0
                    sign = ch
                }    
            }
            
            //栈内元素出栈 求和
            while (stack.size > 0){
                val temp = stack.pop()
                res += temp
            }
            return res 
        }
    }
    
  • 相关阅读:
    MySQL常用命令
    Jstack、Jmap命令简单使用
    MySQL慢查询日志ES索引模板
    MySQL二进制安装部署
    varnish启动报错
    基础训练 Sine之舞
    基础训练 FJ的字符串
    基础训练 芯片测试
    基础训练 龟兔赛跑预测
    基础训练 回形取数
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13814046.html
Copyright © 2011-2022 走看看