Basic Calculator---Nice

原创 2015年11月20日 15:08:34

题目描述

Implement a basic calculator to evaluate a simple expression string.
The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces .
You may assume that the given expression is always valid.
Some examples:
“1 + 1” = 2
” 2-1 + 2 ” = 3
“(1+(4+5+2)-3)+(6+8)” = 23

题目解答

解题思路

基本思路使用栈来解决,栈里面的内容是result和sign符号的正负
有很多细节需要注意

代码实现

public class Solution {
    public int calculate(String s) {
        if(s == null || s.length() == 0)
            return -1;


        // 栈里面保存结果 和 符号的正负
        ArrayDeque<Integer> stack = new ArrayDeque<>();

        //结果 符号 数值
        int result = 0;
        int sign = 1;
        int num = 0;


        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(c >= '0' && c <= '9'){
                //注意进位
                num = num*10 +(c-'0');
            }else if(c == '+'){
                //遇到下一个 + - 再计算
                result += (sign*num);
                sign = 1;
                num = 0;
            }else if(c == '-'){
                result += (sign*num);
                sign = -1;
                num = 0;
            }else if(c == '('){
                stack.push(result);
                stack.push(sign);
                result = 0;
                sign = 1;
            }else if(c == ')'){
                //注意 括号里的结果
                result += (sign*num);

                result *= (stack.pop());
                result += (stack.pop());
                //括号里计算为完之后要清零
                num = 0;
            }
        }

        if(num != 0)
            result += (sign*num);

        return result;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Basic表示一个简单的属性

5、@Basic(fetch=FetchType,optional=true)   可选   @Basic表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的getXxxx()方法,默认 ...
  • u014131893
  • u014131893
  • 2014年03月25日 23:19
  • 2078

HTTP basic Authorization

来源:http://blog.csdn.net/libaineu2004/article/details/38384487 POST /goform/ser2netconfigAT ...
  • u011430225
  • u011430225
  • 2016年07月08日 13:05
  • 1471

JPA的Basic注解

在默认的情况下,Entity中的属性加载方式都是即时加载(EAGER)的,当Entity对象实例化时,就加载了实体中相应的属性值。但对于一些特殊的属性,比如长文本型text、字节流型blob型的数据,...
  • crazy_pan
  • crazy_pan
  • 2010年10月21日 23:15
  • 9659

自己动手写basic解释器(一)

自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源...
  • littlehedgehog
  • littlehedgehog
  • 2008年09月14日 16:14
  • 9252

HTTP Basic Authentication认证

在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回401,如果你直接在浏览器中打开,浏览器会提示你输入用户名和密码。 要在发...
  • youzhouliu
  • youzhouliu
  • 2016年07月27日 19:05
  • 3015

Basic脚本解释器移植到STM32

上次讲了LUA移植到STM32,这次讲讲Basic脚本解释器移植到STM32。在STM32上跑Basic脚本,同样可以跟穿戴设备结合,也可以作为初学者学习MCU的入门工具,当然前提是有人做好Basic...
  • hellogv
  • hellogv
  • 2014年05月23日 18:33
  • 9349

authorization BASIC

一.   BASIC认证概述 在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时,如果...
  • haimiloveatu
  • haimiloveatu
  • 2014年05月05日 16:44
  • 4561

Visual Basic for Applications 学习笔记(一)

一 创建新工作簿 如果要用 Visual Basic 创建新的工作簿,应使用 Add 方法。下述过程创建了新工作簿。Microsoft Excel 自动将该工作簿命名为“BookN”,其中 N 是下一...
  • DeRoshia
  • DeRoshia
  • 2007年01月19日 14:16
  • 819

认证模式之Basic模式

HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Digest认证,这两种方式都属于无状态认证方式,所谓无状态即服务端都不会在会话中记录相关信息,客户端每次访问都需要将用户名和密码放置...
  • wangyangzhizhou
  • wangyangzhizhou
  • 2016年04月15日 18:09
  • 8960

http 基础认证(Basic Authentication)

还是几个月前的老东西。  计算机网络作业需要一个http基础认证的网站来学习http协议本身以及它的安全性。实在找不到这种网站,应该是过时了的技术吧。由于认证过程仅仅是Base64加密(其实这个不算加...
  • u014006264
  • u014006264
  • 2015年07月09日 10:53
  • 3353
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Basic Calculator---Nice
举报原因:
原因补充:

(最多只允许输入30个字)