博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
241. Different Ways to Add Parentheses
阅读量:5952 次
发布时间:2019-06-19

本文共 1899 字,大约阅读时间需要 6 分钟。

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"Output: [0, 2]Explanation: ((2-1)-1) = 0 (2-(1-1)) = 2

Example 2:

Input: "2*3-4*5"Output: [-34, -14, -10, -10, 10]Explanation: (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

难度:medium

题目:给定一包含数字和操作符的字符串,计算并返回其所有数字与操作符组合的结果。有效的操作符为+,-,*

思路:类似unique binary tree, generate parentheses. 卡特兰数。

Runtime: 2 ms, faster than 84.52% of Java online submissions for Different Ways to Add Parentheses.

Memory Usage: 38.6 MB, less than 18.35% of Java online submissions for Different Ways to Add Parentheses.

class Solution {    public List
diffWaysToCompute(String input) { return diffWaysToCompute(input, 0, input.length()); } private List
diffWaysToCompute(String str, int start, int end) { if (!hasOperator(str, start, end)) { List
result = new ArrayList<>(); result.add(Integer.parseInt(str.substring(start, end))); return result; } List
root = new ArrayList<>(); for (int i = start; i < end; i++) { char c = str.charAt(i); if ('+' == c || '-' == c || '*' == c) { List
left = diffWaysToCompute(str, start, i); List
right = diffWaysToCompute(str, i + 1, end); for (Integer l: left) { for (Integer r : right) { if ('+' == c) { root.add(l + r); } else if ('-' == c) { root.add(l - r); } else if ('*' == c) { root.add(l * r); } } } } } return root; } private boolean hasOperator(String s, int start, int end) { for (int i = start; i < end; i++) { char c = s.charAt(i); if ('+' == c || '-' == c || '*' == c) { return true; } } return false; }}

转载地址:http://znoxx.baihongyu.com/

你可能感兴趣的文章
流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
推荐JS插件:imagesLoaded,监测图片加载情况并提供相应的事件(加载成功/失败)...
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>
杨老师课堂之ArrayList集合常用方法解析
查看>>
ElasticSearch Client详解
查看>>
新零售讲堂之时代下的传统零售业,何去何从?
查看>>
c++读取和写入TXT文件的整理
查看>>
深入动态人脸识别小场景应用,2019年或将迎来爆发期
查看>>
Ionic2 下处理 Android 设备下返回按钮的事件
查看>>
linux基础--grep以及模式正则表达式
查看>>
Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
查看>>
linux安全问答(1)
查看>>
微软已停止对Vista RTM(SP0)的服务支持
查看>>
Activity 切换 动画
查看>>
[LeetCode] Sum of Left Leaves 左子叶之和
查看>>
[LeetCode] Find Median from Data Stream
查看>>
3.6. Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota
查看>>
50.9. 触发器(Trigger)
查看>>