`

LeetCode 241- Different Ways to Add Parentheses

 
阅读更多

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-leetcode题解之Different Ways to Add Parentheses.java

    以“Different Ways to Add Parentheses”为例,这个问题是LeetCode上的一个典型算法题,要求解决给定一个没有括号的数学表达式,返回所有可能的计算结果。这个问题在算法上通常被划分为“分治”算法类别,需要利用...

    LeetCode 101 - A LeetCode Grinding Guide (C++ Version).rar

    《LeetCode 101 - A LeetCode Grinding Guide (C++ Version)》是一本专为C++程序员设计的深入解析LeetCode算法问题的指南。这本书采用彩色版,以直观的方式讲解了各种数据结构和算法,旨在帮助读者磨练编程技能,...

    LeetCode 101 - A LeetCode Grinding Guide (C Version).pdf

    《LeetCode 101 - A LeetCode Grinding Guide (C++ Version)》是一本面向有一定C++编程基础,但缺乏刷题经验读者的教科书和工具书。作者高畅(Chang Gao)基于其在准备实习和秋招过程中对LeetCode题目的整理和刷题...

    c语言-leetcode 0020-valid-parentheses.zip

    c c语言_leetcode 0020_valid_parentheses.zip

    LeetCode---C++实现

    《LeetCode---C++实现》是一本专注于C++编程语言解决LeetCode在线判题平台上的算法问题的书籍。LeetCode是程序员广泛使用的平台,它提供了大量的编程题目来提升编程技能和算法理解,尤其对于准备面试的程序员来说,...

    c语言-leetcode 0013-roman-to-integer.zip

    c c语言_leetcode 0013_roman_to_integer.zip

    leetcode1-240题中文题解,md格式,java

    1. leetCode-126-Word-LadderII.md:这涉及到第126题,词梯问题,通常是一个字符串转换问题,目标是找到两个单词之间的最短转换序列,每次只改变一个字母。 2. leetcode-224-Basic-Calculator.md:这是第224题,基础...

    java-leetcode题解之22-Generate-Parentheses

    java入门 java_leetcode题解之22_Generate_Parentheses

    leetcode-leetcode-cli-plugins:leetcode-cli的第3方插件

    leetcode-cli-plugins leetcode-cli 的第 3 方插件。 什么是 如何使用 如何使用 插件 名称 描述 增强的命令 按公司或标签过滤问题 list 不要在同一台计算机上使 Chrome 的会话过期 login 不要在同一台计算机上使 ...

    java-leetcode-114-flatten-binary-tree-to-linked-list

    java java_leetcode-114-flatten-binary-tree-to-linked-list

    c语言-leetcode 0002-add-two-numbers.zip

    c c语言_leetcode 0002_add_two_numbers.zip

    离线和leetcode-leetcode-cn-cli:为leetcode-cn.com工作

    leetcode-cli 一个享受 leetcode 的高效 cli 工具! 非常感谢 leetcode.com,一个非常棒的网站! ⦙⦙⦙⦙⦙⦙⦙⦙ 一个很打问题的方法。 问题来缓解离线思考。 编码前的源代码。 居住和与 leetcode.com。 下载你...

    leetcode接口-leetcodeHelper:leetcodeHelper

    leetcode 接口 该项目可帮助您使用首选的 IDE 或带有命令行界面 (CLI) 的编辑器来执行 leetcode。 入门 先决条件 Windows 10、MacOS、Linux Chrome版 &gt;=90.0.4430 安装 # Prepare your virtual environment conda ...

    leetcode2sumc-leetcode-cli:leetcode-cli

    leetcode-cli 注意:这个存储库是为了临时使用而分叉的。 注意:从 webbrowser 复制 cookie 并使用leetcode user -c可以临时修复不能。 一个享受 leetcode 的高效 cli 工具! 非常感谢 leetcode.com,一个非常棒的...

    C语言-leetcode题解之20-valid-parentheses.c

    具体到文件标题中提到的“20-valid-parentheses.c”,这个文件应该是针对leetCode中第20号题目“有效的括号”的C语言实现。这道题目的核心要求是判断给定的字符串是否为有效的括号组合。有效的括号组合是指,对于每...

    leetcode答案-leetcode--python:leetcode--python

    这个压缩包“leetcode--python”显然包含了与LeetCode相关的Python解题代码,可能是一个开源项目,用于存储用户或社区成员解决LeetCode问题的Python实现。 **LeetCode概述** LeetCode提供了一系列的算法和数据结构...

    leetcode26-algo:算法与数据结构

    leetcode26 algo 算法与数据结构,练习代码 语言:java 8 开发工具:vscode,安装插件Java Extension Pack vscode有智能提示,可调试,有重构支持,满足代码练习要求,相比IDEA更轻量级,普通笔记本即可流畅运行。 ...

    leetcode答案-Leetcode--Algo:Leetcode-某事

    leetcode 答案Leetcode---算法 我对 Leetcode 算法问题的回答

    Vscode安装leetcode插件-LeetCode:力码

    vscode安装leetcode插件力码 依赖关系 Python Python 版本:3.7.* 注意:Python ^3.8.0 会破坏 VSCode python 智能感知和自动完成,因此 ...LeetCode-CLI ...leetcode-tools/leetcode-cli 登录浏览器并提取cookie

Global site tag (gtag.js) - Google Analytics