博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 139 单词拆分(word break)
阅读量:5871 次
发布时间:2019-06-19

本文共 984 字,大约阅读时间需要 3 分钟。

一开始的错误答案与错误思路,幻想直接遍历得出答案:

1 class Solution { 2 public: 3     bool wordBreak(string s, vector
& wordDict) { 4 for(int i;i

这种做法其实方向比较对,但是离正确答案还差一步,这里的step的更新是唯一的,而现实的情况可能同时满足几种不同的step,所以该程序可以通过测试用例"leetcode"

["leet","code"],但是不能通过"cars" ["car","ca","rs"]。所以我们需要想办法吧所有的step下的情况都存起来以供后面查找。但由于这样往后推是树状发散的,结果可能很多;

现在采用dp数组,如果前i个字母可以被拆分,则dp[i]==true否则dp[i]==false,然后令i++,对i+1的验证则是从j=i-maxlenth开始搜索(maxlenth为字典最长的单词长度),如果dp[j]==true且后面的j+1到i+1字典中有,说明i+1可被拆分,dp[i]==true;依次类推,代码如下:

1 class Solution { 2 public: 3     bool wordBreak(string s, vector
& wordDict) { 4 vector
dp(s.size()+1,false); 5 dp[0]=true; 6 unordered_set
m(wordDict.begin(),wordDict.end()); 7 //获取最大wordDict的长度 8 int maxlen=0; 9 for(int i=0;i
wordDict[i].size()? maxlen : wordDict[i].size();11 if(maxlen

 

转载于:https://www.cnblogs.com/joelwang/p/10327932.html

你可能感兴趣的文章
xtrabackup 日志输出
查看>>
聊聊Elasticsearch的Iterables
查看>>
nginx从0到1之参数配置
查看>>
Linux下企业级分区方案
查看>>
决心书
查看>>
远程LInux和秘钥认证
查看>>
三层交换机启用OSPF后,如何实现数据转发路径
查看>>
MYSQL 的集群
查看>>
mongo 学习笔记之(基本命令)
查看>>
PHP扩展详解(一)
查看>>
at/cron计划任务初解
查看>>
自己第一阶段笔记
查看>>
初次使用nginx 搭建http2.0
查看>>
浅析下关于js的 逗号运算符 和 改变this指向 的一道题(mv to git)
查看>>
如何让nodejs在linux后台运行
查看>>
CentOS下LAMP一键yum安装脚本
查看>>
凤凰涅槃:从 iBatis 到 MyBatis
查看>>
Java开发者必须掌握的20个Spring常用注解
查看>>
无线AP网络覆盖两种组网方式
查看>>
死磕 java集合之TreeMap源码分析(一)- 内含红黑树分析全过程
查看>>