graphviz 問(wèn)題
在驗(yàn)證dot是否可用時(shí)
執(zhí)行命令:dot -v
會(huì)出現(xiàn):
dot - graphviz version 2.41.20170921.1950 (20170921.1950)
There is no layout engine support for "dot"
Perhaps "dot -c" needs to be run (with installer's privileges) to register the plugins?
執(zhí)行以上兩步,在使用pygraphviz中如出現(xiàn)如下錯(cuò)誤:Format: "dot" not recognized. Use one of:旺坠, 執(zhí)行第三步命令即可(如下)
第三步:如果dot命令可用绽快, 執(zhí)行命令:dot -c
Python enumerate() 函數(shù)
將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表坐昙、元組或字符串)組合為一個(gè)索引序列宪摧,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo)岳颇,一般用在 for 循環(huán)當(dāng)中合愈。
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
print i, element
0 one
1 two
2 three
Python isdigit() 方法檢測(cè)字符串是否只由數(shù)字組成氮惯。
分治算法
題目:給定一個(gè)含有數(shù)字和運(yùn)算符的字符串,為表達(dá)式添加括號(hào)想暗,改變其運(yùn)算優(yōu)先級(jí)以求出不同的結(jié)果妇汗。你需要給出所有可能的組合的結(jié)果。有效的運(yùn)算符號(hào)包含 +, - 以及 * 说莫。
示例 1:
輸入: "23-45"
輸出: [-34, -14, -10, -10, 10]
解釋:
(2(3-(45))) = -34
((23)-(45)) = -14
((2(3-4))5) = -10
(2((3-4)5)) = -10
(((23)-4)5) = 10
分治算法三步走:
分解:按運(yùn)算符分成左右兩部分杨箭,分別求解
解決:實(shí)現(xiàn)一個(gè)遞歸函數(shù),輸入算式储狭,返回算式解
合并:根據(jù)運(yùn)算符合并左右兩部分的解互婿,得出最終解
class Solution:
def diffWaysToCompute(self, input: str) -> List[int]:
# 如果只有數(shù)字,直接返回
if input.isdigit():
return [int(input)]
res = []
for i, char in enumerate(input):
if char in ['+', '-', '*']:
# 1.分解:遇到運(yùn)算符辽狈,計(jì)算左右兩側(cè)的結(jié)果集
# 2.解決:diffWaysToCompute 遞歸函數(shù)求出子問(wèn)題的解
left = self.diffWaysToCompute(input[:i])
right = self.diffWaysToCompute(input[i+1:])
# 3.合并:根據(jù)運(yùn)算符合并子問(wèn)題的解
for l in left:
for r in right:
if char == '+':
res.append(l + r)
elif char == '-':
res.append(l - r)
else:
res.append(l * r)
return res