动态规划实战12 leetcode-472. Concatenated Words
这道题目实际上可以用到之前的leetcode139中的算法word break
我们先对words数组排序,排序的目的是减少后续的比较
核心思路:每次循环里面直接判断当前的words[i]是不是可以由字典里面的数字组成(word break算法)。
注意我们写代码的顺序,要等每次判断某个words[i]是否可以拆分 再把这个字符加入到字典里面。
class Solution {public static List<String> findAllConcatenatedWordsInADict(String[] words) {List<String> result = new ArrayList<>();Set<String> preWords = new HashSet<>();Arrays.sort(words, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.length()-o2.length();}});for (int i = 0; i < words.length; i++) {if (wordBreak(words[i], preWords)) {result.add(words[i]);}preWords.add(words[i]);//记得要判断后再添加,不然自己就会被加入result}return result;}public static boolean wordBreak(String s, Set<String> hashset) {if(hashset.isEmpty())return false;int n = s.length();boolean []dp = new boolean[n+1];dp[0]=true;for(int i=1;i<=n;i++){for(int j=i;j>=0;j--){if(!dp[j]) continue;String substring = s.substring(j,i);if(hashset.contains(substring)){if(dp[j]){dp[i]=true;break;}}}}return dp[n];}
}
动态规划实战12 leetcode-472. Concatenated Words相关推荐
- [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件
写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...
- 动态规划实战--硬币找零问题
上一篇文章上提到硬币找零的例子,现在我们实战动态规划就从硬币找零开始 问题描述: 给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], - c[n],同时还有一个总金额 k,编写一 ...
- 【leetcode】472. Concatenated Words
题目如下: Given a list of words (without duplicates), please write a program that returns all concatenat ...
- springboot web项目_Vue、Spring Boot开发小而完整的Web前后端分离项目实战12
第12讲 tabs选项卡制作讲解 1.1.tabs选项卡组件: 1. tabs 组件 2.常用属性: value :选中选项卡的name type :选项卡风格 可选择 card / border-c ...
- python字典获取关联值_【Python实战12】使用字典关联数据
现在我的手里有了新的一组数据,数据内容如下: james.txt: James Lee,2002-3-14,2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22,2 ...
- 买卖股票类问题动态规划解法(Leetcode题解-Python语言)
在 Leetcode 中,关于买卖股票的问题共有6道,而这些题目是可以用相同的思维进行求解的,强烈推荐这篇总结,写得非常到位. 股票类问题的动态规划分三步走,1.首先明确方程的含义, T[i][k][ ...
- Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12
1. MySQL数据库的备份与恢复 1.1 Mysqldump的工作原理? 利用mysqldump命令备份的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份的文件的过 ...
- 动态规划——单词拆分(Leetcode 139)
题目选自Leetcode 139.单词拆分 问题描述: 解题思路: 怎么想到用动态规划的? 题目的相关标签中有动态规划.(QAQ) dp数组怎么选? dp[i]: 表示子串s[0:i] 是否全部能拆分 ...
- 动态规划——零钱兑换(Leetcode 322)
题目选自Leetcode 322.零钱兑换 想必大家看一眼就明白了(bushi),这就是动态规划的背包问题~ 算法思想 那么,既然知道了这是个动态规划问题,就要思考如何列出正确的状态转移方程? 1.确 ...
- redis 用户订单缓存_Redis实战(12)-基于Key失效和定时任务实现订单支付超时自动失效...
"商城平台用户下单"这一业务场景相信很多小伙伴并不陌生,在正常的情况下,用户在提交完订单/下完单之后,应该是前往"收银台"选择支付方式进行支付,之后只需要提供相 ...
最新文章
- Linux 之alias 命令别名
- 服务器流量异常排查步骤(查看进程的流量)
- 对于HTML表单输入字段,disabled =“ disabled”和readonly =“ readonly”有什么区别?
- Activiti工作流之个人任务分配模式
- Flutter安装和踩坑指南(windows)
- 小伙工资单被同事看到后遭开除!网友炸锅了 最新后续来了...
- JLink下载hex、bin文件
- Oracle 数据库认证考试
- 安装dreamwaver
- Win软件 - 教你正确使用 Win10 专业版系统自带远程桌面(免费内网穿透)
- 图解网络TCP/IP
- MySQL视图 视图的作用、视图常用语法
- [bbk5148] 第51集 - 第五章 管理内存 06
- 多智能体系统——竞争网络下异构多智能体系统的分组一致性问题 Group consensus of heterogeneous multi-agent system (附论文链接+源码Matlab)
- 【软件测试】300个不得不懂的理论知识(上)
- NanoPi NEO2使用
- 51单片机实战教程(六 网线测试治具设计)
- 【Android】的jenkins环境搭建
- 内容与标准为王:下一代互联网与下一代搜索
- 小程序怎么获取Code