(M)Dynamic Programming:139. Word Break

来源:互联网 发布:西安和沈阳知乎 编辑:程序博客网 时间:2024/06/03 14:44

建一个数组dp,dp[i]表示0~i是否可以被分成字典里的单词。遍历0到i的每个位置j,若0~j可以被分割成单词,那么只需要知道j~i是否在字典里就可以了。

class Solution {public:    bool wordBreak(string s, vector<string>& wordDict) {        int n = wordDict.size();        int len = s.size();        vector<bool> dp(len + 1, false);        dp[0] = true;        for(int i = 1; i <= len; ++i)        {            for(int j = 0; j <= i; ++j)            {                if(dp[j] && find(wordDict.begin(), wordDict.end(), s.substr(j, i - j)) != wordDict.end())                {                    dp[i] = true;                    break;                }            }        }        return dp.back();    }};


原创粉丝点击