• 241. Different Ways to Add Parentheses——本质:DFS


    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]

    class Solution(object):
        def diffWaysToCompute(self, input):
            """
            :type input: str
            :rtype: List[int]
            A: (2*3)-4*5
            ((2*3)-4)*5=>1
            (2*3)-(4*5)=>2
            B:
            2*(3-4)*5
            (2*(3-4))*5=>1
            2*((3-4)*5)=>2
            """
            import re
            tokens = re.split('(D)', input)
            nums = map(int, tokens[::2])
            ops = map({'+': operator.add, '-': operator.sub, '*': operator.mul}.get, tokens[1::2])
            def build(lo, hi):
                if lo == hi:
                    return [nums[lo]]
                ans = []
                for i in range(lo, hi):
                    for a in build(lo, i):
                        for b in build(i+1, hi):
                            ans.append(ops[i](a, b))    
                return ans
            return build(0, len(ops))        

    re.split("(D)", "2+3-1")
    ['2', '+', '3', '-', '1']

  • 相关阅读:
    slf4j + log4j 记录日志
    Executors介绍
    Java集合(JDK1.6.0_45)
    Java多线程系列目录(共43篇)
    线程池体系
    FutureTask
    23种设计模式分类
    结构型 之 适配器模式
    信号量Semaphore详解以及应用
    Excel格式转化工具
  • 原文地址:https://www.cnblogs.com/bonelee/p/6235110.html
Copyright © 2020-2023  润新知