zoukankan      html  css  js  c++  java
  • Leetcode 基本计算器 II JAVA

    题目:

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

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

    示例 1:

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

    示例 2:

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

    示例 3:

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

    解题:

     先令sign为‘+’,取新符号前处理上一个符号。 eg. 3 * 5 + 2   即· + 3 * 5 + 2 取到 * 时,处理 + 3,然后令sign = * ;取到 + 时,处理 3 * 5,令sign = +;最后 i == s.length() - 1,处理 15 + 2;

    class Solution {
        public int calculate(String s) {
              int res = 0, d = 0;
             char sign = '+';
             Stack<Integer> nums = new Stack<Integer>();
             for(int i = 0; i < s.length(); i++) {
                 if(s.charAt(i) >= '0') { //加减乘除和空格的ASCII码都小于'0'
                     d =d * 10 + s.charAt(i) - '0';
                 }
                 if((s.charAt(i) < '0' && s.charAt(i) !=' ') || i == s.length() - 1) {
                     if(sign == '+') {
                         nums.push(d);
                     }else if(sign == '-') {
                         nums.push(-d);
                     }else if(sign == '*' || sign == '/') {
                         int tmp = sign == '*' ? nums.peek() * d : nums.peek() / d;
                         nums.pop();
                         nums.push(tmp);
                     }
                     sign = s.charAt(i);
                     d = 0;
                 }
             }
            for(int t : nums) {
                 res += t;
             }
             return res;
         }
        
    }
  • 相关阅读:
    尚硅谷SpringBoot
    try-with-resources
    Spring中的InitializingBean接口
    @Deprecated注解
    OpenStack 九大组建介绍
    rainbow 实现云上迁移
    推送一个私有镜像到harbor
    搭建企业级私有registry Harbor
    Linux 部署 jenkins
    OpenStack 发放虚拟机流程
  • 原文地址:https://www.cnblogs.com/yanhowever/p/11121208.html
Copyright © 2011-2022 走看看