Word Break
来源:互联网 发布:大数据龙头股票 编辑:程序博客网 时间:2024/05/24 07:10
题目描述
待实现的函数接口的形参类型,
bool wordBreak(string s, vector& wordDict) {
…
}分析
该题使用动态规划的思想能很快解决。我们需要明确以下几点,
1、只要能找到至少一种分割方法就可以返回true
2、找寻策略:将s从头开始,每次添加一个字符进行分割,看分割前后的两部分是否正好在字典里有。而分割前后的两部分的找寻策略同上。代码实现
class Solution {public: bool wordBreak(string s, vector<string>& wordDict) { unordered_map<string,int>dict; //转换wordDict的格式,便于后续操作 unordered_map<string,bool>log; //存储子结果 int maxlen=0; //字典中最长串的长度 //初始化数据 for(auto x:wordDict){ dict[x]++; if(x.size()>maxlen) maxlen=x.size(); } //找寻是否可以拆解 return findBreak(s,dict,maxlen,log); } bool findBreak(string s, unordered_map<string,int>& dict,int maxlen,unordered_map<string,bool>& log){ if(s.size()==0 || dict[s]>0) return true; if(log.count(s)>0) return log[s]; bool b=false; for(int i=1;i<s.size()+1;i++){ if(i>maxlen) break; //子串比字典中最长串还长 if(dict[s.substr(0,i)]>0) b |= findBreak(s.substr(i),dict,maxlen,log); if(b) break; //至少找到了一种分割了 } log[s]=b; return b; }};
阅读全文
0 0
- Word-break:break-word
- Word Break && Word Break ||
- word-break
- Word Break
- Word Break
- Word Break
- word break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- springmvc的配置
- ***线程,GCD,runloop
- java开发系统内核:让内核从严重错误中恢复
- Java菜鸟学习日记3
- (4)系统基础操作
- Word Break
- ElasticSearch提供跨域访问的配置方法
- (5)基础命令详解章
- Ubuntu下git clone速度太慢
- 数据报实现简单的客户端发送数据,服务端接收数据
- 简单速记-3句话浓缩Handler四件套
- 30岁转行做初级程序员是一种怎样的体验?(Being a Junior Developer at 30)
- 竞赛题目讲解-【Standard IO】数的划分
- unity3d各种OpenFileDialog操作