【Hot100】LeetCode—139. 单词拆分

news2024/11/15 8:09:09

目录

  • 1- 思路
    • 题目识别
    • 完全背包-动规五部曲
  • 2- 实现
    • 单词拆分——题解思路
  • 3- ACM 实现

  • 原题链接:139. 单词拆分

1- 思路

题目识别

  • 识别1 :字符串 和一个 字符串数组 判断
  • 识别2:判断字符串能不能由字符串数组拼接形成,返回 truefalse

完全背包-动规五部曲

拆分时可以重复使用字典中的单词,可以看为是一个完全背包的问题

思路:①布尔类型的 dp 数组、②定 i(从1开始) 移动 j(从 0 开始);通过 substring(j,i) 区间内的字符串,判断是否在 wordDict 中,如果在则置 dp[i]true


2- 实现

单词拆分——题解思路

在这里插入图片描述

class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        // 1. 定义 dp 数组
        // 含义 dp[i] 代表以 i 结尾的字符串能否由 数组内容组成
        int len = s.length();
        boolean[] dp = new boolean[len+1];

        // 2.递推公式
        // substring(j,i) 有的话 dp[i] = true;

        // 3. 初始化
        dp[0] = true;

        for(int i = 1 ; i <= len;i++){
            for(int j = 0 ; j < i ; j++){
                if(wordDict.contains(s.substring(j,i)) && dp[j]){
                    dp[i] = true;
                }
            }
        }
        
        return dp[len];
    }
}

3- ACM 实现

public class wordSplit {

    public static boolean splitWord(String s,List<String> wordDict){
        // 1. 定义 dp 数组
        int len = s.length();
        boolean[] dp = new boolean[len+1];

        // 2.递推公式
        // if(dp[j] && s.substring(j,i))

        // 3.初始化
        dp[0] = true;
        for(int i = 1 ; i <= len;i++){
            for(int j = 0 ; j < i ;j++){
                if(dp[j] && wordDict.contains(s.substring(j,i))){
                    dp[i] = true;
                }
            }
        }
        return dp[len];
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入字符串");
        String input = sc.nextLine();
        System.out.println("输入字符数组长度");
        int n = sc.nextInt();
        List<String> list = new ArrayList<>();
        String konge = sc.nextLine();
        for(int i  = 0 ; i < n;i++){
            String str = sc.nextLine();
            list.add(str);
        }

        System.out.println("结果是"+splitWord(input,list));
    }
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SprinBoot+Vue房屋租赁管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

C语言练习题3

1.if语句 /*if语句*/ #include<stdio.h> int main() {int a 10;int b 12;if (a < b) {printf("%d", a);}return 0; }if语句&#xff1a;是条件判断语句。根据小括号中的条件判断该语句中的代码是否执行。如果符合判断的条件就执行&#xff0c;不符合则跳…

零基础国产GD32单片机编程入门(二十一)系统时钟频率配置实战含源码

文章目录 一.概要二.GD32F103C8T6单片机时钟源介绍二.GD32F103C8T6单片机外部高频晶振配置三.GD32F103C8T6单片机内部高频晶振配置四.GD32F103C8T6单片机使用内部8M晶振实验五.工程源代码下载六.小结 一.概要 GD32单片机的时钟源包括多种选项&#xff0c;时钟控制单元提供了一…

滑动窗口+动态规划

前言&#xff1a;分析这个题目的时候&#xff0c;就知道要这两个线段要分开&#xff0c;但是要保证得到最优解&#xff0c;那么我们在选取第二根线段的时候&#xff0c;要保证我们第一根线段是左边最优解 并且我们选的两根线段的右端点一定是我们的数组的点&#xff08;贪心思…

SprinBoot+Vue校园车辆管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

HTML中的文字与分区标记

1.font标记&#xff1a;用来设置文字的字体&#xff0c;大小&#xff0c;颜色&#xff0c;等属性 <!--font:font标记用来设置字体大小颜色属性size:设置字号&#xff0c;默认是3号&#xff0c;1表示4号&#xff0c;-1表示2号&#xff0c;取值范围是[1,7]或[-7,-1]color:设置…

实战案例(4)如果想限制某些终端能上网,哪些不能上网有什么方法呢?

案例四&#xff1a;如果想限制某些终端能上网&#xff0c;哪些不能上网有什么方法呢&#xff1f; 实际中有这样的需求&#xff0c;客户那边希望某些区域只能boss上网或者boss随时都可以上&#xff0c;但是员工需要休息时间才能上&#xff0c;针对这样的需求我们来看看怎么去实现…

Leetcode3271. 哈希分割字符串

Every day a Leetcode 题目来源&#xff1a;3271. 哈希分割字符串 解法1&#xff1a;模拟 按题意模拟。 代码&#xff1a; /** lc appleetcode.cn id3271 langcpp** [3271] 哈希分割字符串*/// lc codestart class Solution { public:string stringHash(string s, int k){…

适用于 Windows 的 Citrix Workspace 中发现两项权限提升

在适用于 Windows 的 Citrix Workspace 应用程序中发现了两个高严重性漏洞CVE-2024-7889 和 CVE-2024-7890。 这些漏洞影响当前版本的 2405 之前的版本以及 LTSR 的 2402 CU1 之前的版本。 Citrix 建议客户立即更新其安装&#xff0c;以减轻使用 Citrix Workspace 环境的用户…

基于亲和性的 GPU 容器绑核策略 Copy

1.引言 在高性能计算和大规模并行任务处理中&#xff0c;GPU已经成为不可或缺的加速器。为了充分发挥GPU的计算能力&#xff0c;通过合理分配CPU核与GPU的绑定来优化CPU和GPU的关系至关重要。我们将探讨socket和NUMA&#xff08;非统一内存访问&#xff09;的概念&#xff0c;并…

计算机的错误计算(九十)

摘要 计算机的错误计算&#xff08;八十九&#xff09;探讨了反双曲余切函数 acoth(x)在 附近的计算精度问题。本节讨论绝对值为大数的反双曲余切函数值的计算精度问题。 Acoth(x) 函数的定义为&#xff1a; 其中 x 的绝对值大于 1 . 例1. 计算 acoth(1.000000000002e15) .…

ORCAD位号,BOOM表

1 ORCAD在页设置编号范围 2 输出BOOM表

基于python+django+vue的农产品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的农…

开发基础之Python 函数(Basic Python Functions for Development)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【天池比赛】【零基础入门金融风控 Task2赛题理解】实战进行中……

2.3 代码示例 2.3.1 导入数据分析及可视化过程需要的库 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import datetime import warnings warnings.filterwarnings(ignore) 2.3.2 读取文件 #读取数据时相对路径载入报错时…

并发编程-JUC原子类、CAS和 Unsafe类

文章目录 零、说在前面一、CAS原理1.1 CAS简介1、线程安全的实现方案2、什么是CAS 1.2 CAS使用案例1.3 CAS存在的问题1、ABA问题2、只能保证一个共享变量之间的原子性操作3、无效CAS会带来开销问题4、总线风暴问题 1.4 CAS在JDK中的应用 二、Unsafe类详解2.1 Unsafe类介绍2.2 U…

使用 Azure 机器学习微调小型语言模型 (SLM) Phi-3

目录 概述 动手实验室 概述 小型语言模型 (SLM) 的动机 效率&#xff1a;SLM 的计算效率更高&#xff0c;需要的内存和存储空间更少&#xff0c;而且由于需要处理的参数更少&#xff0c;因此运行速度更快。成本&#xff1a;培训和部署 SLM 的成本较低&#xff0c;使其可供更广…

【MySQL】从0开始在Centos 7环境安装MySQL

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:MySQL ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 准备步骤 卸载原有环境 安装步骤 获取MySQL官方yum源 安装MySQL yum源 结语 准备步骤 卸载原有环境 第一步登录云服务器(注意安装yum需要在root身份下…

ctf.show靶场ssrf攻略

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 web351 解析:post传入url参数他就会访问。 解法: hackbar传入url参数写入https://127.0.0.1/flag.php web352 解析:post传入url参数&#xff0c;不能是127.0.0.1和localhost 解法:缩写127.1传入 web353 解析…

FTP、SFTP安装,整合Springboot教程

文章目录 前言一、FTP、SFTP是什么&#xff1f;1.FTP2.SFTP 二、安装FTP1.安装vsftp服务2.启动服务并设置开机自启动3.开放防火墙和SELinux4.创建用户和FTP目录4.修改vsftpd.conf文件5.启动FTP服务6.问题 二、安装SFTP总结 前言 在一般项目开发工程中&#xff0c;我们大多数会…