这道题目实际上可以用到之前的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相关推荐

  1. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  2. 动态规划实战--硬币找零问题

    上一篇文章上提到硬币找零的例子,现在我们实战动态规划就从硬币找零开始 问题描述: 给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], - c[n],同时还有一个总金额 k,编写一 ...

  3. 【leetcode】472. Concatenated Words

    题目如下: Given a list of words (without duplicates), please write a program that returns all concatenat ...

  4. springboot web项目_Vue、Spring Boot开发小而完整的Web前后端分离项目实战12

    第12讲 tabs选项卡制作讲解 1.1.tabs选项卡组件: 1. tabs 组件 2.常用属性: value :选中选项卡的name type :选项卡风格 可选择 card / border-c ...

  5. 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 ...

  6. 买卖股票类问题动态规划解法(Leetcode题解-Python语言)

    在 Leetcode 中,关于买卖股票的问题共有6道,而这些题目是可以用相同的思维进行求解的,强烈推荐这篇总结,写得非常到位. 股票类问题的动态规划分三步走,1.首先明确方程的含义, T[i][k][ ...

  7. Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12

    1. MySQL数据库的备份与恢复 1.1 Mysqldump的工作原理? 利用mysqldump命令备份的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份的文件的过 ...

  8. 动态规划——单词拆分(Leetcode 139)

    题目选自Leetcode 139.单词拆分 问题描述: 解题思路: 怎么想到用动态规划的? 题目的相关标签中有动态规划.(QAQ) dp数组怎么选? dp[i]: 表示子串s[0:i] 是否全部能拆分 ...

  9. 动态规划——零钱兑换(Leetcode 322)

    题目选自Leetcode 322.零钱兑换 想必大家看一眼就明白了(bushi),这就是动态规划的背包问题~ 算法思想 那么,既然知道了这是个动态规划问题,就要思考如何列出正确的状态转移方程? 1.确 ...

  10. redis 用户订单缓存_Redis实战(12)-基于Key失效和定时任务实现订单支付超时自动失效...

    "商城平台用户下单"这一业务场景相信很多小伙伴并不陌生,在正常的情况下,用户在提交完订单/下完单之后,应该是前往"收银台"选择支付方式进行支付,之后只需要提供相 ...

最新文章

  1. Linux 之alias 命令别名
  2. 服务器流量异常排查步骤(查看进程的流量)
  3. 对于HTML表单输入字段,disabled =“ disabled”和readonly =“ readonly”有什么区别?
  4. Activiti工作流之个人任务分配模式
  5. Flutter安装和踩坑指南(windows)
  6. 小伙工资单被同事看到后遭开除!网友炸锅了 最新后续来了...
  7. JLink下载hex、bin文件
  8. Oracle 数据库认证考试
  9. 安装dreamwaver
  10. Win软件 - 教你正确使用 Win10 专业版系统自带远程桌面(免费内网穿透)
  11. 图解网络TCP/IP
  12. MySQL视图 视图的作用、视图常用语法
  13. [bbk5148] 第51集 - 第五章 管理内存 06
  14. 多智能体系统——竞争网络下异构多智能体系统的分组一致性问题 Group consensus of heterogeneous multi-agent system (附论文链接+源码Matlab)
  15. 【软件测试】300个不得不懂的理论知识(上)
  16. NanoPi NEO2使用
  17. 51单片机实战教程(六 网线测试治具设计)
  18. 【Android】的jenkins环境搭建
  19. 内容与标准为王:下一代互联网与下一代搜索
  20. 小程序怎么获取Code

热门文章

  1. 《Oracle从入门到精通》
  2. js高程读书笔记(1-3章)
  3. c# webform js文件获取客户端控件,后台cs获取前台客户端控件的值,c#和js的交互...
  4. 二维随机变量期望公式_多维随机变量的特征数
  5. 并发编程学习之阻塞队列BlockingQueue和LinkedBlockingQueue
  6. 常见排序算法之选择排序
  7. spring事务失效场景三:内部方法调用
  8. 在浏览器的地址栏输入网址的背后
  9. jeecg字典表-系统字典
  10. 有没有知道如何连接DB2的数据库?