241. 为运算表达式设计优先级

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

示例 1:

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

示例 2:

输入: "2*3-4*5"
输出: [-34, -14, -10, -10, 10]
解释:
(2*(3-(4*5))) = -34
((2*3)-(4*5)) = -14
((2*(3-4))*5) = -10
(2*((3-4)*5)) = -10
(((2*3)-4)*5) = 10

思路

以运算符作为分点,两边再进行递归。没有碰到运算符的话就时那种输入的input为春数字的情况,这种情况发生在递归到最小一层时,或者原始输入就是纯数字的时候;如果res是空的话就确定是这种情况,则返回string转换的int。
stoi函数可以将 string转为 int。atoi()和 stoi()的区别—-数字字符串的处理
相同点:
①都是 C++的字符处理函数,把数字字符串转换成 int输出
②头文件都是#include

不同点:
①atoi()的参数是 const char* ,因此对于一个字符串 str我们必须调用 c_str()的方法把这个 string转换成 const char*类型的,而 stoi()的参数是 const string*,不需要转化为 const char*;
其中用到的substr函数:
substr的第一个参数为开始索引,第二个参数为长度 length;第二个 参数不写的话代表到达末尾。
substring的第一个参数也为开始索引,但第二个参数为结束索引。

class Solution {
public:vector<int> diffWaysToCompute(string input) {vector<int> res;for(int i=0;i<input.size();i++){char ch = input[i];if(ch == '+' || ch == '-' || ch== '*'){auto res1 = diffWaysToCompute(input.substr(0,i));auto res2 = diffWaysToCompute(input.substr(i+1));for(int k:res1){for(int j:res2){if(ch == '+')res.push_back(k+j);if(ch == '-')res.push_back(k-j);if(ch == '*')res.push_back(k*j);} }}}if(res.empty())res.push_back(stoi(input));return res;}
};

241. 为运算表达式设计优先级相关推荐

  1. 力扣- -241.为运算表达式设计优先级

    力扣- -241.为运算表达式设计优先级(分治算法) 文章目录 力扣- -241.为运算表达式设计优先级(分治算法) 一.题目描述 二.分析 三.代码 四.优化 一.题目描述 二.分析 看到这道题的第 ...

  2. LeetCode 241. 为运算表达式设计优先级(动态规划)

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

  3. [leetcode]241. 为运算表达式设计优先级

    1.提交的代码,分治 class Solution {map< pair<int,int>, vector<int> >hash; // 备忘录 key: < ...

  4. leetcode 241. Different Ways to Add Parentheses | 241. 为运算表达式设计优先级(Java)

    题目 https://leetcode.com/problems/different-ways-to-add-parentheses/ 题解 参考:C++ Solution [Faster than ...

  5. c语言符号运算优先级6,c语言运算符号的优先级

    c语言运算符号的优先级 本文来自百度搜索只为查看方便 优先级等级口诀: 圆方括号.箭头一句号, 自增自减非反负.针强地址长度, 乘除,加减,再移位, 小等大等.等等不等, 八位与,七位异,六位或,五与 ...

  6. 编程优先级c语言,C语言中运算符号的优先级

    C语言中运算符号的优先级 发布时间:2020-06-20 16:13:39 来源:亿速云 阅读:117 作者:Leah 这期内容当中小编将会给大家带来有关C语言中运算符号的优先级,以专业的角度为大家分 ...

  7. 四则混合运算表达式分析程序的原理及其实现

    意义: 四则混合运算表达式可以看作一定语言中的表达式分析及求值,虽然它很小,却是一个语法分析的很好的例子! 一.目标:可以对输入的四则混合运算表达式进行分析,并求出其结果.程序须支持:整数及小数运算. ...

  8. 算数四则混合运算表达式求值

    算数混合四则运算求值 [问题] 利用算符优先关系,实现对算术四则混合运算表达式的求值 [要求] 输入的形式:表达式,例如2*(3+4) 包含的运算符只能有'+' .'-' .'*' .'/' .'(' ...

  9. 使用堆栈实现对算数四则混合运算表达式的求值(C语言)

    使用堆栈实现对算数四则混合运算表达式的求值(C语言) 很方便的目录 使用堆栈实现对算数四则混合运算表达式的求值(C语言) 一.问题分析 基本思路 算符优先级构建 二.算法描述 算法描述 堆栈运算过程的 ...

最新文章

  1. ko文件卸载 linux_Linux驱动06 | 为什么使用内核模块?
  2. 【BZOJ】P2144 跳跳棋
  3. Facebook首席工程负责人胡鲁辉:数字化2.0的理念、架构与业务模型丨鲸犀峰会
  4. 可视化Python设计工具
  5. 奖金(信息学奥赛一本通-T1352)
  6. Jupyter 常用快捷键及导出py文件的方法
  7. 《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
  8. ARM汇编书写格式及符号(symbol)和表达式(expr)
  9. 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~...
  10. POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture
  11. Flutter面试问题总结
  12. 关于贷后的8个专业名词解析
  13. 密码编码学与网络安全———原理与实践(第八版)第三章笔记
  14. 怎样给图片降噪?这几个图片降噪软件可以帮助你
  15. moto edge 如何开启usb调试
  16. apex语言与java比较_Apex 基础知识合辑
  17. 李宏毅机器学习2022 HW1
  18. 阿里云技术专家解读 | 行业首创电商搜索模板
  19. processing创意图形代码_代码之上,诗意之中 | Processing编程造个梦
  20. 节省 3/4 的设计时间:14个设计神器

热门文章

  1. opencv中精度转换
  2. iApp 时间戳互转
  3. 计算机应用基础实训报告,计算机应用基础教学小结
  4. oracle all catalog,创建catalog并注册数据库
  5. Android源码之单双摄像头修改
  6. macbook air可以运行c语言吗,MacBook Air
  7. window系统中升级python版本
  8. 作为前端er,写在年末的一些话
  9. js添加多个子节点_JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
  10. spad dtof lidar车载IMX459更新系列五深度传感器的原理和特点