227. 基本计算器 II

227. Basic Calculator II

题目描述

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

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

LeetCode227. Basic Calculator II中等

示例 1:

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

示例 2:

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

示例 3:

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

说明:

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

Java 实现

import java.util.Stack;

class Solution {
public int calculate(String s) {
int len;
if (s == null || (len = s.length()) == 0) {
return 0;
}
int num = 0;
char sign = '+';
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < len; i++) {
if (Character.isDigit(s.charAt(i))) {
num = num * 10 + s.charAt(i) - '0';
}
if (!Character.isDigit(s.charAt(i)) && ' ' != s.charAt(i) || i == len - 1) {
if (sign == '+') {
stack.push(num);
}
if (sign == '-') {
stack.push(-num);
}
if (sign == '*') {
stack.push(stack.pop() * num);
}
if (sign == '/') {
stack.push(stack.pop() / num);
}
sign = s.charAt(i);
num = 0;
}
}
int res = 0;
for (int x : stack) {
res += x;
}
return res;
}
}

相似题目

参考资料

最新文章

  1. php基础的一点注意事项
  2. android 开发 程序中下载安装APK文件 问题汇总 解析程序包时出现问题
  3. Could not load file or assembly &#39;Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0 系统找不到指定的文件。
  4. 在一周内学会使用 AUTO CAD
  5. ML 01、机器学习概论
  6. selenium太有爱,我已离不开!!!
  7. ajax提交写法
  8. android脚步---不同界面之间切换
  9. Java基础笔记12
  10. easyUI拖动课程进课程表
  11. 微信小程序图片宽100%显示并且不变形
  12. 解决win10不显示coreldraw x4/5/6菜单栏
  13. CSUOJ 1011 Counting Pixels
  14. 马老师 Linux基础入门
  15. piblog 0.2
  16. java 多线程 1 “常用的实现多线程的2种方式”:Thread 和 Runnable
  17. 动态横向(水平)合并GridView数据行DataRow的列
  18. 解决获取View的width和Height为0的4种方法
  19. centos创建本地yum仓库
  20. python--如何在线上环境优雅的修改配置文件?

热门文章

  1. 前端知识-控制div标签的显示与隐藏
  2. 一. python 安装
  3. gin+redis
  4. urql 高度可自定义&amp;&amp;多功能的react graphql client
  5. 洛谷P2730 [IOI]魔板 Magic Squares
  6. 「SNOI2019」积木
  7. 第06组 Alpha冲刺(6/6)
  8. Spring Cloud Ribbon---微服务调用和客户端负载均衡
  9. Hbuilder提交项目到GitHub出现cannot open git-upload-pack
  10. Centos7安装golang