如何用Python实现LeetCode241.不同加括号方式数问题?

2026-04-03 01:291阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计298个文字,预计阅读时间需要2分钟。

如何用Python实现LeetCode241.不同加括号方式数问题?

题目:https://leetcode.com/problems/different-ways-to-add-parentheses/description/+给定一个由数字和运算符组成的字符串,返回所有可能的计算结果,通过计算所有可能的数字和运算符组合方式来分组数字。

+示例:+输入:(2+3)*(5+6)+输出:[23, 52]

题目:leetcode.com/problems/different-ways-to-add-parentheses/description/

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 *.

Example 1:

Input: “2-1-1”.

((2-1)-1) = 0(2-(1-1)) = 2

Output: [0, 2]

Example 2:

Input: “23-45”

(2*(3-(45))) = -34((23)-(45)) = -14((2(3-4))5) = -10(2((3-4)5)) = -10(((23)-4)*5) = 10

如何用Python实现LeetCode241.不同加括号方式数问题?

Output: [-34, -14, -10, -10, 10]

分析:递归,笛卡尔积代码:

class Solution: def diffWaysToCompute(self, input): ops = {'+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y} def ways(s): ans = [] for i in range(len(s)): if s[i] in "+-*": ans += [ops[s[i]](l, r) for l, r in itertools.product(ways(s[0:i]), ways(s[i+1:]))] if not ans: ans.append(int(s)) return ans return ways(input)

代码转自:zxi.mytechroad.com/blog/leetcode/leetcode-241-different-ways-to-add-parentheses/

本文共计298个文字,预计阅读时间需要2分钟。

如何用Python实现LeetCode241.不同加括号方式数问题?

题目:https://leetcode.com/problems/different-ways-to-add-parentheses/description/+给定一个由数字和运算符组成的字符串,返回所有可能的计算结果,通过计算所有可能的数字和运算符组合方式来分组数字。

+示例:+输入:(2+3)*(5+6)+输出:[23, 52]

题目:leetcode.com/problems/different-ways-to-add-parentheses/description/

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 *.

Example 1:

Input: “2-1-1”.

((2-1)-1) = 0(2-(1-1)) = 2

Output: [0, 2]

Example 2:

Input: “23-45”

(2*(3-(45))) = -34((23)-(45)) = -14((2(3-4))5) = -10(2((3-4)5)) = -10(((23)-4)*5) = 10

如何用Python实现LeetCode241.不同加括号方式数问题?

Output: [-34, -14, -10, -10, 10]

分析:递归,笛卡尔积代码:

class Solution: def diffWaysToCompute(self, input): ops = {'+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y} def ways(s): ans = [] for i in range(len(s)): if s[i] in "+-*": ans += [ops[s[i]](l, r) for l, r in itertools.product(ways(s[0:i]), ways(s[i+1:]))] if not ans: ans.append(int(s)) return ans return ways(input)

代码转自:zxi.mytechroad.com/blog/leetcode/leetcode-241-different-ways-to-add-parentheses/