【LeetCode】139. Word Break
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"
.
bpos表示从字符串是否可以从开头cut到当前位置。
bpos[i]==true代表从字符串开头到第i个字符结束,存在合理的cut。
在字符串s前面加上0,从而为动态规划设置初值即bpos[0]==true
class Solution { public: bool wordBreak(string s, unordered_set<string>& wordDict) { if(s == "") return true; string news = "0" + s; int n = news.size(); vector<bool> bpos(n, false); bpos[0] = true; for(int i = 1; i < n; i ++) { for(int j = 0; j < i; j ++) { if(bpos[j] == true && wordDict.find(news.substr(j+1, i-j)) != wordDict.end()) bpos[i] = true; } } return bpos[n-1]; } };