当前位置: 首页 > 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.lryc.cn/news/626714.html

相关文章:

  • Java 大视界 -- Java 大数据在智能医疗远程会诊数据管理与协同诊断优化中的应用(402)
  • C++---向下取整(>>)与向零取整(/)
  • WPF Alert弹框控件 - 完全使用指南
  • 【力扣 买卖股票的最佳时机 Java/Python】
  • 【Unity3D优化】平衡 Hide 与 Destroy:基于性能等级与 LRU 的 UI 管理策略与实践思考
  • 大数据毕业设计选题推荐-基于Hadoop的电信客服数据处理与分析系统-Spark-HDFS-Pandas
  • 计算机网络模型
  • 华为数通认证学习
  • CSS 定位的核心属性:position
  • SPSS数据文件的建立与管理
  • JAVA中向量数据库(Milvus)怎么配合大模型使用
  • 案例分享:BRAV-7123助力家用型人形机器人,智能生活未来已来
  • vscode连接docker
  • Linux 文本处理与 Shell 编程笔记:正则表达式、sed、awk 与变量脚本
  • React-native之组件
  • 51单片机-驱动LED点阵模块教程
  • Gitee仓库 日常操作详细步骤
  • 【笔记】动手学Ollama 第五章 Ollama 在 LangChain 中的使用 - Python 集成
  • 康师傅2025上半年销售收入减少超11亿元,但净利润增长20.5%
  • Linux《进程间通信(下)》
  • LidaReferv1论文细节解读
  • Linux面试经典题目(七)
  • 在SQL中使用大模型时间预测模型TimesFM
  • 不会写 SQL 也能出报表?积木报表 + AI 30 秒自动生成报表和图表
  • sqlalchemy 是怎么进行sql表结构管理的,怎么进行数据处理的
  • 深度学习核心技巧
  • SQL-leetcode— 2356. 每位教师所教授的科目种类的数量
  • Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发送重平衡(reblanace)
  • Mybatis执行SQL流程(五)之MapperProxy与MapperMethod
  • 在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本2)