首页 > 代码库 > [LeetCode] Word Break 拆分词句
[LeetCode] Word Break 拆分词句
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = "leetcode"
,
dict = ["leet", "code"]
.
Return true because "leetcode"
can be segmented as "leet code"
.
这道拆分词句问题是看给定的词句能分被拆分成字典里面的内容,还是需要用动态规划Dynamic Programming来做,具体讲解可参考网友Code Ganker的博客,代码如下:
class Solution {public: bool wordBreak(string s, unordered_set<string> &dict) { int len = s.size(); vector<bool> res(len + 1, false); res[0] = true; for (int i = 0; i < len + 1; ++i) { for (int j = 0; j < i; ++j) { if (res[j] && dict.find(s.substr(j, i-j)) != dict.end()) { res[i] = true; break; } } } return res[len]; }};
下面我们从题目中给的例子来分析:
l
le e
lee ee e
leet
leetc eetc etc tc c
leetco eetco etco tco co o
leetcod eetcod etcod tcod cod od d
leetcode eetcode etcode tcode code
T F F F T F F F T
我们知道算法的核心思想是逐行扫描,每一行再逐个字符扫描,每次都在组合出一个新的字符串都要到字典里去找,如果有的话,则跳过此行,继续扫描下一行。
[LeetCode] Word Break 拆分词句
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。