leetcode-139. Word Break

来源:互联网 发布:asp时时彩合买源码 编辑:程序博客网 时间:2024/05/16 16:08

考察点:dp;
思路:dp总是那么难想。关键是要搞清楚dp【i】表示的是什么, 这里的dp【i】表示的就是问题:即s的前i个字符可以由set1内的字符串表示出来吗?方法是两个循环,外层是从s的第一个位置1到最后位置len;内层循环是遍历set1中的所有string,看第i个位置是否符合要求。
C++代码:

class Solution {public:    bool wordBreak(string s, vector<string>& wordDict) {        set<string> set1;        for (auto i : wordDict) {            set1.insert(i);        }        int len = s.size();        bool dp[len+1];        memset(dp, 0, sizeof(dp));        dp[0] = true;        for (int i=1; i<=len; i++) {            for (string sub : set1) {                if (sub.size() <= i) {                    if (dp[i - sub.size()]) {                        if (sub == s.substr(i-sub.size(), sub.size())) {                            dp[i] = true;                            break;                        }                    }                }            }        }        return dp[len];    }};
0 0
原创粉丝点击