Expression Add Operators

2024-01-04 12:48
文章标签 add expression operators

本文主要是介绍Expression Add Operators,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一道求集合的dfs题。有很多的要注意的地方:

1. 为了处理,

"3456237490", 9191 -> []
我们得用long来处理数字,表现在:
long curNum = Long.valueOf(curStr);

2. i是小于等于num的size,

i <= num.length()

3. 对于乘法,要理解以下,来求解当前的结果

curRes - prevNum + prevNum * curNum
4. 对于第一个数字,直接将当前数字带入之后计算。

helper(list, nextNum, target, curStr, curNum, curNum);

public class Solution {public List<String> addOperators(String num, int target) {List<String> list = new LinkedList<>();helper(list, num, target, "", 0, 0);return list;}//private void helper(List<String> list, String num, int target, String temp, int curRes, int prevNum) {private void helper(List<String> list, String num, int target, String temp, long curRes, long prevNum) {if (curRes == target && num.length() == 0) {list.add(new String(temp));return ;}//for (int i = 1; i < num.length(); i++) {for (int i = 1; i <= num.length(); i++) {String curStr = num.substring(0, i);if (curStr.length() > 1 && curStr.charAt(0) == '0') {return;}//int curNum = Integer.valueOf(curStr);long curNum = Long.valueOf(curStr);String nextNum = num.substring(i);if (temp.length() != 0) {helper(list, nextNum, target, temp + '*' + curNum, curRes - prevNum + prevNum * curNum, prevNum * curNum);helper(list, nextNum, target, temp + '+' + curNum, curRes + curNum, curNum);helper(list, nextNum, target, temp + '-' + curNum, curRes - curNum, -curNum);} else {helper(list, nextNum, target, curStr, curNum, curNum);}}}
}




这篇关于Expression Add Operators的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569378

相关文章

C++可以被重载的操作符Overloadable operators

C++允许绝大多数操作符被重载,也就是重新定义操作符实现的功能,这样它们的行为可以被设计出来以适应所有的数据类型,包括类。 以下是C++可以被重载的操作符(Overloadable operators): //四则运算符+ - * / %+= -= *= /= %=//比较运算符> >= == != //赋值运算符= //位操作

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

ubuntu16.04 Git add 使用tab键卡死

以前使用Ubuntu14.04 进行git add 操作时使用TAB键可以很快自动补全,但自从使用16.04使用TAB半天没有反应。 一开始以为是Git版本问题,后验证与Git无关。 搜索发现与Dash有关,以下是博客原文: http://www.51testing.com/html/50/n-1245050.html 今天碰到一个问题git 后面的参数用Tab键无法补全

Add All -uva优先队列的应用

题目的解法属于贪心,因为cost=a1+a2,所以要保证每次的cost最小,所以说,每次将队列中最小的两个相加,得出来的数放入队列中,再取2个最小的相加,直到全部加完,所以这就涉及了一个取2个最小数的问题,我说一下我一开始的做法 #include<stdio.h>#include<iostream>#include<stdlib.h>using namespace std;#define

leetcode#10. Regular Expression Matching

题目 Implement regular expression matching with support for ‘.’ and ‘*’. '.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input

Android studio jar包多层嵌套,Add library '__local_aars__:...@jar' to classpath问题

在添加jar包,早app下的build.gradle中的 implementation files('libs/jar包的名字.jar') 修改为 api files('libs/jar包的名字.jar') implementation 单层引用,只引用当前jar包层, api 多层引用,应用当前jar包层,已经jar包引用的jar包层

unable to access android sdk add-on list解决办法

mac环境,由于不小心删掉了sdk文件夹的内容,拷贝别人的文件内容过来后,发现sdkmanager不见了。 慌乱中重装了Android Studio。 打开app后发现如下提示:unable to access android sdk add-on list 解决办法: 在 Android Studio 安装目录 bin/idea.properties 文件最后追加一句 disabl

GIT:git add命令指定文件夹

git add命令可以指定文件夹来添加文件到git仓库中。 1、使用相对路径         当你在命令行中使用git add命令时,可以通过相对路径指定文件夹。例如,如果你的文件夹名为myfolder,可以使用以下命令将整个文件夹添加到git仓库中: git add myfolder/ 注意,路径名后面的斜杠是必需的,它表示将文件夹中的所有文件都添加。如果不加斜杠,命令会视为添加具

LeetCode - 10. Regular Expression Matching

10. Regular Expression Matching Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个串s和一个自动机p(模糊字符只含有'.'和'*'),问串s是否能够和自动机p匹配. analyse:

LeetCode 67 Add Binary

题意: 两个二进制数相加,输出结果 思路: 各种模拟均可,比如先把A和B倒过来,再按位相加,最后把结果再倒回来。 不过为了快,我是这样做的——假设A比B长,那么我对位相加B的长度。这时如果没有进位,那么A长出B的部分就不会变了;如果有进位,那么继续往A的高位加,直到某一次进位为0,那么更高位的A就不变了;如果直到最后还有进位,那就最前面添加一个最高位1。 代码: cla