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

【LeetCode】【算法】139. 单词拆分

LeetCode 139. 单词拆分

题目

给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。
注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
示例:
输入: s = “leetcode”, wordDict = [“leet”, “code”]
输出: true
解释: 返回 true 因为 “leetcode” 可以由 “leet” 和 “code” 拼接成。

思路

思路:动态规划,数组boolean dp[0~i]表示字符串[0,i-1]位是否可以被wordDict中的内容表示

  1. 动态规划数组初始化:第0位字符串为空,所以肯定可以被表示,dp[0]=true;
  2. 嵌套循环填充动态规划数组:
    I. 第一个for循环遍历字符串for(int i=0; i<s.length(); i++)
    II. 第二个for循环遍历从第i位起的字符串for(int j=i+1; j<s.length()+1; j++),在第二个for循环中,如果满足dp[i] && wordDict.contains(s.subString(i,j)),则将dp[j]置为true。这个条件如果满足的话,意思是0~i-1位可以被表示,且i~j也能被表示,则将dp[j](0~j)置为true以表示wordDict可以表示字符串的0~j位
  3. 返回dp[s.length()]

代码

class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        // dp[i]表示从[0~i]可以被wordDict中的内容表示
        boolean[] dp = new boolean[s.length() + 1];
        dp[0] = true; // 表示空字符串可以被wordDict表示
        for (int i = 0; i < s.length(); i++) {
            for (int j = i + 1; j < s.length() + 1; j++) {
                // 0~i可被wordDict中的元素表示 && 后面也能被wordDict表示的话
                if (dp[i] && wordDict.contains(s.substring(i, j))){
                    dp[j] = true;
                }
            }
        }
        return dp[s.length()];
    }
}

http://www.kler.cn/a/382372.html

相关文章:

  • oasys系统代码审计
  • 雷池社区版 7.1.0 LTS 发布了
  • .vue文件中定义变量和在引用的.ts文件中定义变量的区别
  • 基于SSM社区便民服务管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • qt QDragEnterEvent详解
  • Ghidra无头模式(自动化批处理执行重复性任务)
  • 推荐一款非常好用的C/C++在线编译器
  • asp.net+uniapp养老助餐管理系统 微信小程序
  • JVM进阶调优系列(8)如何手把手,逐行教她看懂GC日志?| IT男的专属浪漫
  • webworker
  • 如何使用uniswap v2 获取两个代币的交易对池子
  • 实习冲刺Day15
  • golang学习3
  • leetcode206. Reverse Linked List
  • 理解 Transformer 中的编码器-解码器注意力层(Encoder-Decoder Attention Layer)
  • 【测试语言篇一】Python进阶篇:内置容器数据类型
  • 24年配置CUDA12.4,Pytorch2.5.1,CUDAnn9.5运行环境
  • 【C++】踏上C++学习之旅(五):auto、范围for以及nullptr的精彩时刻(C++11)
  • 【LeetCode热题100】哈希表
  • 【大模型LLM面试合集】大语言模型架构_bert细节
  • [ DOS 命令基础 3 ] DOS 命令详解-文件操作相关命令
  • 三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库
  • 视图-数据库sqlserver
  • jmeter 性能测试步骤是什么?
  • 代码随想录训练营Day18 | 77. 组合 - 216.组合总和III - 17.电话号码的字母组合
  • Qml组件之Text