博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Word Break (重重重)
阅读量:4107 次
发布时间:2019-05-25

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

题目:

解法一:

深搜

剪枝:如果s中含有dict中不包含的字符 直接输出false.

class Solution { public:	 int flag = 0;	 bool wordBreak(string s, unordered_set
&dict) { int a[26]; for (int i = 0; i < 26; i++) a[i] = 0; for (int i = 0; i < s.length(); i++) a[s[i]-'a'] = 1; for (unordered_set
::iterator it = dict.begin(); it != dict.end(); it++) { for (int j = 0; j < it->length(); j++) { string temp = *it; a[temp[j]-'a'] = 0; } } int temp = 0; for (int i = 0; i < 26; i++) { temp += a[i]; } if (temp > 0) return false; search(s, dict); if (flag == 1) return true; return false; } void search(string s, unordered_set
&dict) { if (flag == 1) return; if (s == "") { flag = 1; } else { for (unordered_set
::iterator it = dict.begin(); it != dict.end(); it++) { string tempstr = s.substr(0, it->length()); if (tempstr == *it) { tempstr = s.substr(it->length(), s.length() - it->length()); search(tempstr, dict); } } } } };
解法二:

DP:

dp[i]  表示源串的前i个字符可以满足分割,那么 dp[ j ] 满足分割的条件是存在k 使得 dp [k] && substr[k,j]在字典里。

// 第二版 参考leetcode官网上的答案class Solution { public:bool wordBreak(string s, unordered_set
&dict) { vector
wordB(s.length() + 1, false); wordB[0] = true; for (int i = 1; i < s.length() + 1; i++) { for (int j = i - 1; j >= 0; j--) { if (wordB[j] && dict.find(s.substr(j, i - j)) != dict.end()) { wordB[i] = true; break; //只要找到一种切分方式就说明长度为i的单词可以成功切分,因此可以跳出内层循环。 } } } return wordB[s.length()]; }};

转载地址:http://cutsi.baihongyu.com/

你可能感兴趣的文章
字符编码:ASCII,Unicode 和 UTF-8
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
i2c-tools
查看>>
Linux分区方案
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>