专栏名称: 每日一道算法题
学习算法是一种信仰,每天都需要坚持!
目录
相关文章推荐
九章算法  ·  当面试官是自己的算法课老师时 ·  昨天  
九章算法  ·  谷歌被曝滥用H1B,裁员潮或因此终结! ·  2 天前  
九章算法  ·  某大厂开始“捡漏”L5+码农了 ·  2 天前  
九章算法  ·  Meta大佬爆肝总结:LeetCode刷题1 ... ·  昨天  
算法与数据结构  ·  一个周末重写所有代码,性能提升10倍!没有这 ... ·  6 天前  
51好读  ›  专栏  ›  每日一道算法题

[每日一题][分治算法]241. Different Ways to Add Parentheses

每日一道算法题  · 公众号  · 算法  · 2017-05-01 21:50

正文

题目描述


Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +- and *.


Example 1

Input: "2-1-1".

((2-1)-1) = 0
(2-(1-1)) = 2

Output: [0, 2]


Example 2

Input: "2*3-4*5"

(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

Output: [-34, -14, -10, -10, 10]

解决方案


记录运算符的下标,然后对于每一个运算符都可以将当前的表达式分成左右两部分:将左右两部分的数字进行组合,就可以得到当前递归的答案集合‘如果当前表达式没有运算符则返回当前表达式的数字。





最佳提交