博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法刷题笔记-stack-四则运算
阅读量:6112 次
发布时间:2019-06-21

本文共 1829 字,大约阅读时间需要 6 分钟。

题目描述:

给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。

示例 1:

输入: "2-1-1"

输出: [0, 2]
解释:
((2-1)-1) = 0
(2-(1-1)) = 2

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/different-ways-to-add-parentheses

解题思路:

   1、每次仅运算乘除,将运算结果入栈,

    a、保留前一个运算符

    b、如果前一个运算符是乘除,弹出一个数字,与当前运算,结果回送。

    c、如果是减号,将当前数字取负,送进堆栈;正号,直接入栈

  2、扫描结束后,对栈中所有元素求和。结束

java语言实现:

1 class Solution { 2     public static int calculate(String s) { 3         int res = 0; 4         int num = 0; 5         char sign = '+'; 6         Stack
stack = new Stack<>(); 7 char[] sarr = s.toCharArray(); 8 for (int i = 0; i < sarr.length; i++) { 9 if (sarr[i] >= '0') {10 num = num * 10 + sarr[i] - '0'; // 注意字符变成数字,方可参加运算,否则直接ASCII码参与运算,出错。11 }12 if ((sarr[i] < '0' && sarr[i] != ' ') || i == sarr.length - 1) {13 if (sign == '+') {14 stack.push(num);15 } else if (sign == '-') {16 stack.push(-num);17 } else if (sign == '*' || sign == '/') {18 int top = stack.pop();19 stack.push(sign == '*' ? top * num : top / num);20 }21 sign = sarr[i];22 num = 0;23 }24 }25 while (!stack.isEmpty()) {26 res += stack.pop();27 }28 return res;29 }30 31 public static int calculate2(String s) {32    s=s.trim(); //清洗输入数据,并记得将洗过的数据回送给s33 java.util.Stack
stack = new java.util.Stack<>();34 // String[] nums=s.split("[-+/*]");35 int left_number=0;36 char fuhao_before='+'; //保存前一个符号37 char fuhao;38 for (int i=0;i

 

 

转载于:https://www.cnblogs.com/sqchao/p/11074147.html

你可能感兴趣的文章
求最大值及其下标
查看>>
多输入使用多线程
查看>>
Sql Server系列:数据库物理模式设计
查看>>
Sql Server系列:Select检索数据
查看>>
从底层谈WebGIS 原理设计与实现(一):开篇
查看>>
[Aaronyang] 写给自己的WPF4.5 笔记[1布局]
查看>>
Java中的static关键字解析
查看>>
成功进行了一次UDP打洞
查看>>
C#面向对象(四)
查看>>
这篇文章主要介绍了Citrix XenServer 6.1 安装图解教程
查看>>
js判断手机是否安装了某一款app,有则打开,没有去下载
查看>>
让你不再害怕指针
查看>>
读书笔记之: 操作系统概念(第6版)-第二部分 进程管理(进程, 线程, CPU调度, 进程同步, 死锁)...
查看>>
ng之自定义指令
查看>>
golang中builtin包说明
查看>>
C# 输出24小时格式时间
查看>>
日常css技巧小结(2)-- inline-block带来的迷惑
查看>>
基于VMware模拟实现远程主机网络通信
查看>>
jquery each
查看>>
利用GoAccess分析Nginx访问日志
查看>>