动态规划。
dp[i] == true表示s.substr(0, i)可以由dict里的字符串组成;
dp[0]初始化为true, dp[1, ..., s.size()]初始化为false.
代码:
class Solution { public: bool wordBreak(string s, unordered_set<string> &dict) { vector<bool> dp(s.size() + 1, false); dp[0] = true; for (size_t i = 0; i < s.size(); ++ i) { if (dp[i] == true) { for (size_t length = 1; i + length <= s.size(); ++ length) { dp[i + length] = dp[i + length]? true: dict.find(s.substr(i, length))!=dict.end(); } } } return dp[s.size()]; } };