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()];
}
};