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: "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]
https://leetcode.com/problems/different-ways-to-add-parentheses/
Solution:
public List<Integer> diffWaysToCompute(String s) { String[] arr = s.split("[\\+\\-\\*\\/]"); String[] ops = s.split("\\d+"); // Note: the 1st item is a space int n = arr.length; int[] nums = new int[n]; for(int i=0; i<n; i++) { nums[i] = Integer.parseInt(arr[i].trim()); } return diffWays(nums, ops, 0, n-1); } public List<Integer> diffWays(int[] nums, String[] ops, int left, int right) { List<Integer> list = new ArrayList<>(); if(left == right) { list.add(nums[left]); return list; } for(int i=left+1; i<=right; i++) { List<Integer> list1 = diffWays(nums, ops, left, i-1); List<Integer> list2 = diffWays(nums, ops, i, right); for(int num1:list1) { for(int num2:list2) { switch(ops[i].charAt(0)) { case '+': list.add(num1+num2); break; case '-': list.add(num1-num2); break; case '*': list.add(num1*num2); break; case '/': list.add(num1/num2); break; } } } } return list; }
相关推荐
java java_leetcode题解之Different Ways to Add Parentheses.java
c c语言_leetcode 0020_valid_parentheses.zip
js js_leetcode题解之22-generate-parentheses.js
js js_leetcode题解之20-valid-parentheses.js
c语言入门 C语言_leetcode题解之22-generate-parentheses.c
c语言入门 C语言_leetcode题解之20-valid-parentheses.c
《LeetCode---C++实现》是一本专注于C++编程语言解决LeetCode在线判题平台上的算法问题的书籍。LeetCode是程序员广泛使用的平台,它提供了大量的编程题目来提升编程技能和算法理解,尤其对于准备面试的程序员来说,...
c c语言_leetcode 0013_roman_to_integer.zip
1. leetCode-126-Word-LadderII.md:这涉及到第126题,词梯问题,通常是一个字符串转换问题,目标是找到两个单词之间的最短转换序列,每次只改变一个字母。 2. leetcode-224-Basic-Calculator.md:这是第224题,基础...
js js_leetcode题解之32-longest-valid-parentheses.js
c语言入门 C语言_leetcode题解之32-longest-valid-parentheses.c
java入门 java_leetcode题解之22_Generate_Parentheses
leetcode-cli-plugins leetcode-cli 的第 3 方插件。 什么是 如何使用 如何使用 插件 名称 描述 增强的命令 按公司或标签过滤问题 list 不要在同一台计算机上使 Chrome 的会话过期 login 不要在同一台计算机上使 ...
java java_leetcode-114-flatten-binary-tree-to-linked-list
哈希表 - LeetCode刷题 - 题解
c c语言_leetcode 0002_add_two_numbers.zip
LeetCode 101 - A Grinding Guide.pdf
leetcode-cli 一个享受 leetcode 的高效 cli 工具! 非常感谢 leetcode.com,一个非常棒的网站! ⦙⦙⦙⦙⦙⦙⦙⦙ 一个很打问题的方法。 问题来缓解离线思考。 编码前的源代码。 居住和与 leetcode.com。 下载你...