博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Middle-题目38:241. Different Ways to Add Parentheses
阅读量:2434 次
发布时间:2019-05-10

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

题目原文:

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]

题目大意:
给出一个算数表达式字符串(有数字和+-*三种运算符),求出用不同种类的加括号方式能算得的数分别是什么。(允许重复)
题目分析:
典型的分治算法。如果字符串只是一个数,则只有1种情况,否则找到其中的运算符,分割成左右两个表达式串,递归求算得的数的序列(分别记为leftList和rightList),再分别遍历leftList和rightList的每个数,加入在当前运算符下算得的结果即可。
源码:(language:java)

public class Solution {    public  List
diffWaysToCompute(String input) { List
list=new ArrayList
(); if(isNumeric(input)) // if input is an integer list.add(Integer.parseInt(input)); else { for(int i=0;i
leftList = diffWaysToCompute(input.substring(0,i)); List
rightList = diffWaysToCompute(input.substring(i+1)); for(Integer j : leftList) for(Integer k : rightList) list.add(operate(j,op,k)); } } } return list; } private Integer operate(int a, char op, int b) { if(op=='+') return a+b; else if(op=='-') return a-b; else return a*b; } public boolean isNumeric(String str){ for(int i=str.length();--i>=0;){ int chr=str.charAt(i); if(chr<48 || chr>57) return false; } return true; } }

成绩:

9ms,beats 27.25%,众数8ms,21.40%
cmershen的碎碎念:
根据discuss,本题似乎用HashMap可以提高一点效率。但基本思路不变。

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

你可能感兴趣的文章
移动周刊第 188 期:Android 安全性要点与规范核心详析
查看>>
手机为基础的 IoT 布局已经失效,下一代操作系统是什么模样?
查看>>
无线传感器网络使用指南
查看>>
《近匠》专访机智云 CTO 刘琰——从 0 到 1 开启智能化硬件开发
查看>>
深度对话微软,解读 HoloLens 技术设计细节
查看>>
移动周刊第 191 期:如何看待 Kotlin 成为 Android 官方支持开发语言?
查看>>
物联网浪潮之下,前端工程师如何迎刃而上?
查看>>
从端到云——工业物联网项目全栈快速开发
查看>>
LoRa vs NB-IOT:哪个物联网标准更具优势?
查看>>
Docker是啥?容器变革的火花?
查看>>
假如从餐饮店的角度来看架构…
查看>>
这个充电宝太黑科技了,又小又不用自己带线,长见识了~
查看>>
HDC.2019后再发力,AppGallery Connect服务新升级
查看>>
网易云音乐热评的规律,44万条数据告诉你
查看>>
超神!GitHub 标星 5.5w,如何用 Python 实现所有算法?
查看>>
扛住100亿次请求——如何做一个“有把握”的春晚红包系统
查看>>
在北京看场雪为什么这么难?
查看>>
新年了,5G手机芯片,到底买谁?
查看>>
疫情之下「在家办公模式」开启,你该选择哪些远程协同工具?
查看>>
如何使用pdpipe与Pandas构建管道?
查看>>