给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。
说明:
- 拆分可以重复使用字典中的单词
- 你可以假设字典中没有重复的单词
// 单词拆分
bool recursion(const string& s, int idx, unordered_set<string>& set) {
if (idx == s.length())
return true;
bool isSplit = false;
for (int i = idx; i < s.length(); i++) {
if (set.find(s.substr(idx, i - idx + 1)) != set.end()) {
if (recursion(s, i + 1, set)) {
isSplit = true;
}
}
}
return isSplit;
}
bool wordSplit(string s, vector<string>& wordDict) {
unordered_set<string> set;
// 初始化hash表
for (int i = 0; i < wordDict.size(); i++)
set.insert(wordDict[i]);
return recursion(s, 0, set);
}