当前位置: 首页 > 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.dtcms.com/a/341788.html

相关文章:

  • 关于 Flask 3.0+的 框架的一些复习差异点
  • 在 Linux 和 Docker 中部署 MinIO 对象存储
  • 深入解析:生产环境 SQL 数据库的架构设计与工程实践
  • 税务专业人员能力构建与发展路径指南
  • ubuntu系统上的conda虚拟环境导出方便下次安装
  • 【网络运维】Linux 文本搜索利器: grep命令
  • JavaBean中首字母小写第二个字母大写属性转换异常详解
  • GIT总结一键式命令清单(顺序执行)
  • redis---常用数据类型及内部编码
  • 官网SSO登录系统的企业架构设计全过程
  • 七十四、【Linux数据库】MySQL数据库存储引擎
  • 11让LLM更懂FunctionCalling返回值
  • S32K3 的图形化配置和EB配置mcal差异
  • week2-[二维数组]排队
  • MySQL/Kafka数据集成同步,增量同步及全量同步
  • Windows 如何清理右键菜单?电脑桌面右键菜单里出现一个清理内存 怎么去掉?
  • 数据结构中邻接矩阵中的无向图和有向图
  • 流固耦合|01流固耦合分类
  • 面试 TOP101 二分查找/排序专题题解汇总Java版(BM17 —— BM22)
  • Alpha测试:软件上线前的关键环节
  • 意象框架:连接感知与认知的统一信息结构分析——基于上古汉语同源词意义系统的词源学与认知语言学探索
  • 深入理解与应用向量嵌入(Vector Embeddings):原理、实现与多场景实践
  • 轻量级流程编排框架,Solon Flow v3.5.0 发布
  • WEB安全篇:浏览器攻击原理及防护
  • 软件设计师——数据结构与算法基础学习笔记
  • mac安装Trae并解决App Unavailable问题
  • 【Java进阶】Java JIT 编译器深度解析与优化实践
  • 49.Seata-XA模式
  • Day57 Java面向对象12 多态
  • 齐次线性方程组最小二乘解