241. 为运算表达式设计优先级
题目描述: 给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以按任意顺序 返回答案。
考察重点:(递归分治) 以符号位分割为左右两部分,得到所有可能组合结果
func isDigit(input string) bool {
_, err := strconv.Atoi(input)
return err == nil
}
func DiffWaysToCompute(expression string) []int {
if isDigit(expression) {
tmp, _ := strconv.Atoi(expression)
return []int{tmp}
}
var res []int
for index, c := range expression {
tmpC := string(c)
if tmpC == "+" || tmpC == "-" || tmpC == "*" {
left := DiffWaysToCompute(expression[:index])
right := DiffWaysToCompute(expression[index+1:])
for _, leftNum := range left {
for _, rightNum := range right {
var addNum int
if tmpC == "+" {
addNum = leftNum + rightNum
} else if tmpC == "-" {
addNum = leftNum - rightNum
} else {
addNum = leftNum * rightNum
}
res = append(res, addNum)
}
}
}
}
return res
}
|