- 单词拆分
给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
说明:
拆分时可以重复使用字典中的单词。
你可以假设字典中没有重复的单词。
ahhhhhh 我真棒 一遍过
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
int size = wordDict.size();
int wSize = s.size();
int dp[wSize+1];
for (int i = 0; i < wSize; i++) {
dp[i] = 0;
}
for (int i = 0; i < wSize; i++) {
// cout << i << " test i" << endl;
bool flag = false;
for (int j = i; j >= 0; j--) {
// cout << j << "test j" << endl;
if (flag == true) {
// cout << dp[i] << endl;
break;
}
string str = s.substr(j, i-j+1);
// cout << str << endl;
for (int k = 0; k < size; k++) {
if (str == wordDict[k]) {
if (j == 0) {
dp[i] = 1;
flag = true;
} else {
if (dp[j-1] == 1) {
dp[i] = 1;
flag = true;
} else {
break;
}
}
}
}
}
}
// for (int i = 0; i < wSize; i++) {
// cout << dp[i] << endl;
// }
return dp[wSize-1] == 1;
}
};