解单词拆分问题

问题描述:

题目:Leetcode第139题

难度:中等

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

示例 1:

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。
示例 2:

输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。
     注意,你可以重复使用字典中的单词。
示例 3:

输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false
 

提示:

1 <= s.length <= 300
1 <= wordDict.length <= 1000
1 <= wordDict[i].length <= 20
s 和 wordDict[i] 仅有小写英文字母组成
wordDict 中的所有字符串 互不相同

BFS:

层层遍历

 BFS一般不需要递归,只需要使用一个队列记录每一层需要记录的值即可。BFS中在截取 的时候,如果截取的子串存在于字典中,我们就要记录截取的位置,到下一层的时候就从 这个位置的下一个继续截取,来看下代码。

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {queue<int> q;q.push(0);int len=s.size();//v 用来纪录已经访问过的位置,如果再次访问可以直接跳过vector<bool> v;v.resize(len,false);while(!q.empty()){int index=q.front();q.pop();if(index==len){return true;}//如果被访问g过,跳过if(v[index]){continue;}//true 标记被访问过的v[index]=true;for(int i=index+1;i<=len;i++){//str 表示s 中 index 到i 这一段字符串string str(s.begin()+index,s.begin()+i);if(find(wordDict.begin(),wordDict.end(),str)!=wordDict.end()){q.push(i);}}}return false;}
};

动态规划:

首先确定状态变量,我们设dp[ i ] 表示前 i 个字符 是否能够有字典里的词拼出,对于dp[ i ]我们往前截取 k 个字符 ,这时若[ i-k,i]这个字符串存在于字典中,则dp[i]=dp[i-k].

我们就可以得到转移方程:

dp[i]=dp[i-k]&& find(wordDict.begin(),wordDict.end(),str1)!=wordDict.end();

k 需要我们枚举,看代码:

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {vector<bool> dp;dp.resize(s.size()+1,false);for(int i=1;i<=s.size();i++){枚举k 的值for(int k=0;k<=i;k++){//如果往前截取全部字符串,我们直接判断子串[0,i-1]//是否存在于字典wordDict中即可if(k==i){string str(s.begin(),s.begin()+i);if(find(wordDict.begin(),wordDict.end(),str)!=wordDict.end()){dp[i]=true;continue;}}string str1(s.begin()+i-k,s.begin()+i);if( find(wordDict.begin(),wordDict.end(),str1)!=wordDict.end()){dp[i]=dp[i-k];}//如果dp[i]为true,说明前i个字符串结果拆解可以让他的所有子串//都存在于字典wordDict中,直接终止内层循环,不用再计算dp[i]了。if(dp[i]){break;}}}return dp[s.size()];}
};

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一次 Netty 不健壮导致的无限重连分析

由于 OOM 导致不健壮的 Netty 一系列诡异的行为&#xff0c;这次的问题分析会比上次那个更有意思一点。&#xff08;备注&#xff1a;本文 Netty 版本是上古时代的 3.7.0.Final) 现象描述 开发的同学反馈 dubbo 客户端无法调用远程的服务&#xff0c;抓包来看&#xff0c;客户…

G2SAT: Learning to Generate SAT Formulas论文精读

0. Abstract SAT&#xff08;布尔可满足&#xff09;问题被证明是一个经典的np完全问题&#xff0c;作为一个计算机科学的基本问题&#xff0c;在决策、验证和理论证明等很多方面都有应用。目前的SAT求解器的开发和评估依赖于现有的有限的现实问题&#xff0c;且现有的手工制作…

【论文精读】A Survey on Knowledge Graphs Representation, Acquisition and Applications

A Survey on Knowledge Graphs Representation, Acquisition and Applications 前言Abstract1. INTRODUCTIONII. OVERVIEWA. A Brief History of Knowledge BasesB. Definitions and NotationsC. Categorization of Research on Knowledge GraphD. Related Surveys III. KNOWLE…

SharpContour论文精读

SharpContour: A Contour-based Boundary Refinement Approach for Efficient and Accurate Instance Segmentation 论文链接&#xff1a;[2203.13312] SharpContour: A Contour-based Boundary Refinement Approach for Efficient and Accurate Instance Segmentation (arxiv…

【论文精读】HumanNeRF

目录 Abstract1.Introduction2.Related workHuman specific renderingNeural radiance fieldsHuman-specific neural renderingConcurrent work 3.Representing a Human as a Neural FieldCanonical volumeSkeletal motionNon-rigid motionPose correction 4.Optimizing a Huma…

GAN论文精读以及基础讲解

GAN精读论文&#xff1a;Neurips-2014-Generative Adversarial Nets 根据李沐老师的讲解加上笔者个人的理解做的一个笔记&#xff0c;希望能够对想了解GAN的求学者有所帮助&#xff01; 一、标题、作者、期刊 论文的标题名为Generative Adversarial Nets&#xff0c;中文解释…

我在工作群和ChatGPT聊了会天,找到了升职加薪的新思路

ChatGPT 大火&#xff01; 我们知道&#xff0c;基于 AIGC 的 ChatGPT 可以整合信息并“回复”给我们所需的很多类答案&#xff0c;比如写论文、作诗、画画&#xff0c;不过现在&#xff0c;ChatGPT 已经从火出圈的现象级 AI 应用&#xff0c;迅速被更多开发者融入到更多产品工…

容联七陌:ChatGPT大模型能力为智能客服带来新方向

科技云报道原创。 近几个月来&#xff0c;大众对ChatGPT预期的持续走高&#xff0c;也影响到了智能客服领域公司的命运。 一方面&#xff0c;ChatGPT的出现为智能客服场景带来了更加“智能”的可能性&#xff1b;但另一方面&#xff0c;有人认为ChatGPT完全可以替代现有的智能…

ChatGPT爆火之后,视觉研究者坐不住了?谷歌将ViT参数扩大到220亿

本文来源 机器之心 编辑&#xff1a;泽南 视觉模型有很大的提升空间&#xff0c;研究者们在以往的 LLM 中学到经验教训&#xff0c;认为扩展是一个很有前途的方法。来自谷歌的研究者将 ViT 扩展到 22B 参数量&#xff0c;这是迄今为止报道的最大的视觉主干。 与自然语言处理类…

Android之Android studio实现智能聊天机器人

Android实现智能聊天机器人 最近在做项目中,突然来了灵感,要做一个聊天机器人.聊天机器人在很多大型App上都有使用,比如QQ群里的QQ小冰,淘宝京东等App上在没有人工客服之前会有机器人跟你聊天,根据你发的问题关键词,向你推荐一些答案,可以省下很多人工的时间以及减小服务器的压…

图像复原之维纳滤波

基本原理 图像复原是图像处理的重要组成部分&#xff0c;由于图像在获取和传输过程中通常不可避免的要受到一些噪声的干扰&#xff0c;因此在进行其他图像处理以及图像分析之前&#xff0c;应该尽量将图像复原到其原始真实状态。图像复原的关键问题是在于建立退化模型。图像退…

图像复原

1图像复原的而理论模型 定义&#xff1a;在成像过程中&#xff0c;由于成像系统各种因素的影响&#xff0c;可能使获得的图像不是真实景物的完善影像。图像在形成、传播和保存过程中使图像质量下降的过程&#xff0c;称为图像退化。图像复原就是重建退化的图像&#xff0c;使其…

UBI.city白皮书发布与空投领取方法

在经历了至少5次的全面推翻与重构后&#xff0c;UBI.city的方案终于可以发布了。 UBI.city简介 UBI.city是去中心化组织的动态治理协议&#xff0c;白皮书可在官网 www.ubi.city 中查阅。 随着The DAO在2016年募集了1170万枚ETH&#xff08;价值约2.45亿美元&#xff09;&am…

WhatsApp被禁用操作教程|实操WhatsApp解封的过程|2023三月

我是上周被WhatsApp被禁用了&#xff0c;按照网上的方法&#xff0c;点击Support提交&#xff0c;会自动跳转一个邮件&#xff0c;发送到WhatsApp官方&#xff0c;我满心欢喜地等待解封&#xff0c;以为会像大家说的那样&#xff0c;第二天可以解封。 就是点击那个 支持 提交了…

微信网页版解封方法

最近&#xff0c;微信又推出了网页版的【文件传输助手】&#xff0c;也就是说&#xff0c;无需登录客户端的微信&#xff0c;即可进行文件或图片的传输。 网址是 https://filehelper.weixin.qq.com网址巨长&#xff0c;咋一看&#xff0c;又长又难记&#xff0c;玩个锤子 经…

微信小程序-获取用户头像信息以及修改用户头像

这里主要用到button的open-type功能&#xff0c;官网已有说明&#xff1a; 给button设置open-type"chooseAvatar"&#xff0c;来使bindchooseavatar方法生效&#xff0c;在bindchooseavatar指定的函数中获取用户的头像信息 <button open-type"chooseAvata…

小程序中新版本的获取用户头像与昵称:bind:chooseavatar

前言&#xff1a; 自从微信官方把获取用户昵称与头像的功能改动以后&#xff0c;给我们开发和用户的操作又增加了很多负担&#xff0c;但是没办法&#xff0c;只能使用最新的使用方法了。 小程序用户头像昵称获取规则调整公告 新版实现效果&#xff1a; 注意&#xff0c;真机…

关于QQ群头像以及微信讨论组头像的工具类

QQ群头像以及微信讨论组头像工具类介绍 介绍&#xff1a; 由于段时间公司项目需求&#xff0c;在翻了网上很多代码后发现&#xff0c;很多人用的是自定义View的办法来实现此类头像的效果&#xff0c;但是&#xff0c;这样一来就必须改变项目中原有的控件&#xff0c;而且当需要…

桌面宠物!

电脑桌宠&#xff1a; 天选姬 下载地址&#xff1a;https://www.asus.com.cn/supportonly/FA506QR/HelpDesk_download/ 选择系统&#xff0c;点击软件程序下的查看更多&#xff0c;选择天选姬桌面大鹅&#xff08;Desktop Goose&#xff09; 下载地址&#xff1a;https://wwu.…

微信小程序最新调用用户头像以及昵称

众所周知&#xff1a;微信小程序开发是面对“公告”编程&#xff0c;小程序的api更新迭代之快&#xff0c;让人叫苦不堪&#xff0c;&#xff0c;&#xff0c; 最近开发小程序项目时&#xff0c;获取用户头像和昵称的方式发生了很大的改变&#xff1a; 它居然绑定到一个 butt…