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

这道题的答案我也是学习了蛮久的,先说一下分治算法的方法:

分解:按运算符分成左右两部分,分别求解

解决:实现一个递归函数,输入算式,返回算式解

合并:根据运算符合并左右两部分的解,得出最终解

其实我感觉就是递归。

不纠结了,说一下这道题的解题思路吧,按照符号来计算,每到一个符号,就把这个符号之前的一系列计算结果,和这个符号之后的结算结果,做相应的计算;其实就相当于这个符号是最后被计算的,遍历一遍之后,每个符号都有最后计算的时候,就相当于加了不同的括号。然后再说为什么是之前的一系列计算结果,因为在一个符号之前可能是表达式,也会有加上不同的括号是结果不同的时候,所以就是一个递归。

我发现我只能这样笨笨的想,不知道有没有啥方法突破。

积累的方法:

1 input.substring(0,z) ,substring全是小写;

2 case 会忘记写break,也是醉了,感觉有些问题只有不用IDE才能发现。

3 string 转Integer Integer.valueOf(input)

代码:

https://github.com/hanleirx/LeetCode/blob/master/241.%20%E4%B8%BA%E8%BF%90%E7%AE%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AE%BE%E8%AE%A1%E4%BC%98%E5%85%88%E7%BA%A7

你可能感兴趣的:(241. 为运算表达式设计优先级)