Leetcode 139

来源:互联网 发布:png格式打开软件 编辑:程序博客网 时间:2024/04/27 20:59

Word Break

这也是一个动态规划的问题,判断一个字符串能否切分成字典里面的单词,切分成子问题就是对于string s中的每一个字符i,如果在他前面的某一个字符j,j前可以切分,从j到i刚好是一个字典里的单词,那么就可以切分,或者从0到i正好也是一个单词。

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