当前位置: 首页 > news >正文

动态规划----6.单词拆分

139. 单词拆分 - 力扣(LeetCode)

/**

        visited[]:记录结果,visited[i]代表s中的前i个字符构成的单词在wordDict是否存在

        visited[0] = true,其余初始化为false; 0代表空字符串初始化为true;其余通过后续递推更改状态

        word.length--> len

        前1个字符构成的单词(s[0,1 - 1]):visited[1] = true --> 1 >= len && visited[1 - len] && s.substring(1 - len, 1).equals(word)

        当前前1个字符组成的单词足够匹配wordDict中的单词(1 >= len) 且前1 - len个字符构成的单词在wordDict中存在(s[0,1-len)) 且当前[1-len,1)的len个单词在wordDict是否存在

        前2个字符构成的单词(s[0,2 - 1]):visited[1] = true --> 2 >= len && visited[2 - len] && s.substring(2 - len, 2).equals(word)

        当前前2个字符组成的单词足够匹配wordDict中的单词(2 >= len) 且前2 - len个字符构成的单词在wordDict中存在(s[0,2-len)) 且当前[2-len,2)的len个单词在wordDict是否存在

        ........

        前i个字符构成的单词(s[0,i - 1]):visited[i] = true --> i >= len && visited[i - len] && s.substring(i - len, i).equals(word)

        当前前i个字符组成的单词足够匹配wordDict中的单词(i >= len) 且前i - len个字符构成的单词在wordDict中存在(s[0,i-len)) 且当前[i-len,i)的len个单词在wordDict是否存在

        即若当前已处理到的字符长度为i,待匹配的单词长度为len,则若前i - len个单词成功匹配 且 后len个单词也匹配成功,则说明当前前i个字符匹配成功

*/

class Solution {/**visited[]:记录结果,visited[i]代表s中的前i个字符构成的单词在wordDict是否存在visited[0] = true,其余初始化为false; 0代表空字符串初始化为true;其余通过后续递推更改状态word.length--> len 前1个字符构成的单词(s[0,1 - 1]):visited[1] = true --> 1 >= len && visited[1 - len] && s.substring(1 - len, 1).equals(word) 当前前1个字符组成的单词足够匹配wordDict中的单词(1 >= len) 且前1 - len个字符构成的单词在wordDict中存在(s[0,1-len)) 且当前[1-len,1)的len个单词在wordDict是否存在前2个字符构成的单词(s[0,2 - 1]):visited[1] = true --> 2 >= len && visited[2 - len] && s.substring(2 - len, 2).equals(word) 当前前2个字符组成的单词足够匹配wordDict中的单词(2 >= len) 且前2 - len个字符构成的单词在wordDict中存在(s[0,2-len)) 且当前[2-len,2)的len个单词在wordDict是否存在........前i个字符构成的单词(s[0,i - 1]):visited[i] = true --> i >= len && visited[i - len] && s.substring(i - len, i).equals(word) 当前前i个字符组成的单词足够匹配wordDict中的单词(i >= len) 且前i - len个字符构成的单词在wordDict中存在(s[0,i-len)) 且当前[i-len,i)的len个单词在wordDict是否存在即若当前已处理到的字符长度为i,待匹配的单词长度为len,则若前i - len个单词成功匹配 且 后len个单词也匹配成功,则说明当前前i个字符匹配成功*/public boolean wordBreak(String s, List<String> wordDict) {int n = s.length();boolean[] dp = new boolean[n + 1];Arrays.fill(dp, false);dp[0] = true;for(int i = 1; i <= n; i++) {for(String word : wordDict) {int len = word.length();if(i >= len && dp[i - len] && s.substring(i - len,i).equals(word)) {dp[i] = true;break;}}}return dp[n];}
}

http://www.xdnf.cn/news/1337185.html

相关文章:

  • AI重塑软件测试:质量保障的下一站
  • 【clion】cmake脚本1:调试脚本并构建Fargo项目win32版本
  • Linux: network: arp: arp_accept
  • HTML应用指南:利用POST请求获取全国刘文祥麻辣烫门店位置信息
  • 我从零开始学习C语言(12)- 循环语句 PART1
  • DRF序列化器
  • PyTorch API 7
  • 数据安全事件分级
  • 嵌入式的各个要点总结(不断更新)
  • KubeBlocks for ClickHouse 容器化之路
  • 第三十三天(信号量)
  • GO环境变量中GO111MODULE到底是干啥的?
  • 【NFTurbo】基于Redisson滑动窗口实现验证码发送限流
  • 【运维】githubvercel学习使用
  • nginx-下载功能-状态统计-访问控制
  • Qt 中最经典、最常用的多线程通信场景
  • 安装electron报错的解决方法
  • 【Express零基础入门】 | 构建简易后端服务的核心知识
  • jvm三色标记
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • 机器学习--数据清洗—(续篇)
  • 算法 ----- 链式
  • 基础笔记8.20
  • 【运维进阶】shell三剑客
  • RK-Android11-PackageInstaller安装器自动安装功能实现
  • 福昕PDF编辑软件高级版下载与详细图文安装教程!!
  • 力扣 30 天 JavaScript 挑战 第36天 第8题笔记 深入了解reduce,this
  • 【嵌入式电机控制#34】FOC:意法电控驱动层源码解析——HALL传感器中断(不在两大中断内,但重要)
  • day075-MySQL数据库服务安装部署与基础服务管理命令
  • 《算法导论》第 35 章-近似算法