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]; } };
本文转自博客园Grandyang的博客,原文链接:拆分词句[LeetCode] Word Break ,如需转载请自行联系原博主。