程式語言 - LeetCode - C++ - 139. Word Break



題目:


方法:

dp[i] = 前 i 個字元(s[0 ~ i-1])是否可以被拆分

解答:

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        int n = s.size();
        vector<bool> dp(n + 1, false);
        unordered_set<string> q(wordDict.begin(), wordDict.end());

        dp[0] = true;
        for (int i = 1; i <= n; ++i) {
            for (int j = 0; j < i; ++j) {
                if (dp[j] && q.count(s.substr(j, i - j))) {
                    dp[i] = true;
                    break;
                }
            }
        }

         return dp[n];
    }
};