LeetCode Expression Add Operators
2016-01-11 07:02
369 查看
Description:
Given a string that contains only digits
possibilities to add binary operators (not unary)
or
Examples:
Solution:
一开始想的是区间,因为没法处理乘法,但是后来发现可以用DFS+记录前序数字……这个方法比较优雅
Given a string that contains only digits
0-9and a target value, return all
possibilities to add binary operators (not unary)
+,
-,
or
*between the digits so they evaluate to the target value.
Examples:
"123", 6 -> ["1+2+3", "1*2*3"] "232", 8 -> ["2*3+2", "2+3*2"] "105", 5 -> ["1*0+5","10-5"] "00", 0 -> ["0+0", "0-0", "0*0"] "3456237490", 9191 -> []
Solution:
一开始想的是区间,因为没法处理乘法,但是后来发现可以用DFS+记录前序数字……这个方法比较优雅
<span style="font-size:18px;">import java.util.*; public class Solution { List<String> list = new LinkedList<String>(); int n; int target; public List<String> addOperators(String num, int target) { n = num.length(); this.target = target; dfs(0, 0, num, ""); return list; } public void dfs(long pre, long sum, String str, String path) { if (str.length() == 0) { if (sum == target) list.add(new String(path)); return; } for (int i = 1; i <= str.length(); i++) { String currentStr = str.substring(0, i); long currentNum = Long.parseLong(currentStr); String nextStr = str.substring(i, str.length()); if (currentStr.charAt(0) == '0' && currentStr.length() > 1) return; if (path.length() > 0) { dfs(currentNum, sum + currentNum, nextStr, path + "+" + currentStr); dfs(-currentNum, sum - currentNum, nextStr, path + "-" + currentStr); dfs(currentNum * pre, sum - pre + pre * currentNum, nextStr, path + "*" + currentStr); } else { dfs(currentNum, currentNum, nextStr, currentStr); } } } }</span>
相关文章推荐
- apache中301和403优先级
- Linux下snmp常用的OID,用做服务器监控
- Linux下snmp常用的OID,用做服务器监控
- apache用户认证和静态缓存疑惑
- Facebook POP 进阶指南
- [leetcode] 138. Copy List with Random Pointer 解题报告
- openstack 入门1
- linux中shell数组的使用和建立
- 初探linux内核编程,参数传递以及模块间函数调用
- OpenStack配置解析库oslo.config的使用方法
- Linux Epoll介绍和程序实例
- Linux运维01 计划任务
- 简单了解WordPress开发中update_option()函数的用法
- Centos7上使用官方YUM源安装Mysql
- nginx服务器安装及配置文件详解
- Nginx配置upstream实现负载均衡
- Shell学习笔记
- Tomcat启动时报StandardServer.await: create[8005]: java.net.BindException: Cannot assign requested add...
- Tomcat启动时报StandardServer.await: create[8005]: java.net.BindException: Cannot assign requested add...
- RedHat Enterprise Linux 5 安装GCC过程[转]