這道題的答案我也是學(xué)習(xí)了蠻久的,先說一下分治算法的方法:
分解:按運(yùn)算符分成左右兩部分罕容,分別求解
解決:實(shí)現(xiàn)一個(gè)遞歸函數(shù)缓待,輸入算式桶唐,返回算式解
合并:根據(jù)運(yùn)算符合并左右兩部分的解棍丐,得出最終解
其實(shí)我感覺就是遞歸误辑。
不糾結(jié)了,說一下這道題的解題思路吧歌逢,按照符號(hào)來計(jì)算巾钉,每到一個(gè)符號(hào),就把這個(gè)符號(hào)之前的一系列計(jì)算結(jié)果趋翻,和這個(gè)符號(hào)之后的結(jié)算結(jié)果,做相應(yīng)的計(jì)算盒蟆;其實(shí)就相當(dāng)于這個(gè)符號(hào)是最后被計(jì)算的踏烙,遍歷一遍之后,每個(gè)符號(hào)都有最后計(jì)算的時(shí)候历等,就相當(dāng)于加了不同的括號(hào)讨惩。然后再說為什么是之前的一系列計(jì)算結(jié)果,因?yàn)樵谝粋€(gè)符號(hào)之前可能是表達(dá)式寒屯,也會(huì)有加上不同的括號(hào)是結(jié)果不同的時(shí)候荐捻,所以就是一個(gè)遞歸黍少。
我發(fā)現(xiàn)我只能這樣笨笨的想,不知道有沒有啥方法突破处面。
積累的方法:
1?input.substring(0,z) 厂置,substring全是小寫;
2 case 會(huì)忘記寫break魂角,也是醉了昵济,感覺有些問題只有不用IDE才能發(fā)現(xiàn)。
3 string 轉(zhuǎn)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