leetcode 241. Different Ways to Add Parentheses (Python版)
2016-02-06 18:56
761 查看
题目:
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
大意是给定一个运算,求解所有运算序列的解
例如
Input:
将运算转换成栈过程,这样就将问题转换成一个递归问题
即每一步分为两种走法:
1)继续向栈中添加数字与运算符
2)弹出2个数字1个运算符进行计算
代码:
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) = 10Output:
[-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)
相关文章推荐
- python_proxy
- python获取ip代理列表爬虫
- Python爬虫(单线程爬虫(三))
- Python模拟登录验证码(代码简单)
- Woody的Python学习笔记4
- Python上传package到Pypi(代码简单)
- Python fp
- Python爬虫学习(单线程爬虫(二))
- Beginning Python Chapter 3 Notes
- python中快速判断一个对象是否是字符串
- Python爬虫学习(单线程爬虫(一))
- Python 值传递和引用传递
- ironPython 发现不了第三方库处理办法
- 20来行的Python拼写检查器
- Python之二维数组N*N顺时针旋转90度
- Python3.x和Python2.x的区别,以及python2代码转python3
- Beginning Python Chapter9
- Python爬取一个网页的图片
- 【Python 笔记】神奇的匿名函数
- 机器学习基石笔记-感知机