leetcode 241. Different Ways to Add Parentheses (Python版)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 241. Different Ways to Add Parentheses (Python版)相关的知识,希望对你有一定的参考价值。
题目:
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 *
.
大意是给定一个运算,求解所有运算序列的解
例如
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]
算法思路:
将运算转换成栈过程,这样就将问题转换成一个递归问题
即每一步分为两种走法:
1)继续向栈中添加数字与运算符
2)弹出2个数字1个运算符进行计算
代码:
class Solution(object): def addOperatorAndNumber(self, inputList, stack): if len(inputList) < 2: return [] stack.append(inputList[0]) stack.append(inputList[1]) inputList = inputList[2:] return self.calculate(inputList,stack) def calculateTopStack(self, inputList, stack): number1 = int(stack.pop()) operator = stack.pop() number2 = int(stack.pop()) if operator == "+": stack.append(number1 + number2) elif operator == "-": stack.append(number2 - number1) elif operator == "*": stack.append(number1 * number2) return self.calculate(inputList,stack) def calculate(self, inputList, stack): if len(stack) == 1: if len(inputList) == 0: return [stack[0]] else: return self.addOperatorAndNumber(inputList,stack) result1 = self.calculateTopStack(inputList[:], stack[:]) result2 = self.addOperatorAndNumber(inputList[:],stack[:]) result1.extend(result2) return result1 def diffWaysToCompute(self, input): """ :type input: str :rtype: List[int] """ input = input.replace(‘+‘," + ") input = input.replace("-"," - ") input = input.replace("*"," * ") inputList = input.split(" ") stack = [int(inputList[0])] return self.calculate(inputList[1:],stack)
本文出自 “温温” 博客,请务必保留此出处http://wdswds.blog.51cto.com/11139828/1741286
以上是关于leetcode 241. Different Ways to Add Parentheses (Python版)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 241. Different Ways to Add Parentheses
leetcode 241. Different Ways to Add Parentheses (Python版)
leetcode 241. Different Ways to Add Parentheses
[LeetCode] 241. Different Ways to Add Parentheses