思路
首先遍历字符串的每一字串是可以做出来的,但是时间复杂度太高,所以用动态规划的办法,可以省下不少时间。
具体的想法就是维护一个vector v,用i,j来遍历字符串s,使得每个子循环里v[i] = v[j] + v[i -j]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class { public: bool wordBreak(string s, vector<string>& wordDict) { vector<bool> tables(s.size() + 1, false); tables[0] = true for (int i = 1; i <= s.size(); i++) { for (int j = i - 1; j >= 0; j--) { if (tables[j]) { string word = s.substr(j, i - j); if (wordDict.find(word) != wordDict.end()) { tables[i] = true; break; } } } } return tables[s.size()]; } };
|
近期评论