Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.
Return all such possible sentences.
For example, given
s = "catsanddog",
dict = ["cat", "cats", "and", "sand", "dog"].
A solution is ["cats and dog", "cat sand dog"].
class Solution {
public:
vector<string> wordBreak(string s, unordered_set<string> &dict) {
const int n = s.size();
int f[n+1];
fill_n(&f[0], n+1, false);
f[0] = true;
vector<vector<bool> > prev(n+1, vector<bool>(n, false));
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
if (f[j] && dict.find(s.substr(j,i-j)) != dict.end()) {
f[i] = true;
prev[i][j] = true;
}
}
}
vector<string> cur;
vector<string> res;
dfs(s, n, cur, res, prev);
return res;
}
void dfs(string s, int n, vector<string> &cur, vector<string> &res, const vector<vector<bool> > &prev) {
if (n == 0) {
string tmp;
for (auto i = cur.crbegin(); i != cur.crend(); i++) {
tmp += *i + " ";
}
tmp.erase(tmp.end()-1);
res.push_back(tmp);
return ;
}
for (int i = s.size()-1; i >= 0; i--) {
if (prev[n][i]) {
cur.push_back(s.substr(i, n-i));
dfs(s, i, cur, res, prev);
cur.pop_back();
}
}
}
};
本文深入探讨了AI音视频处理领域中的视频分割与语义识别技术,介绍了如何利用深度学习算法实现高效准确的视频分析。
476

被折叠的 条评论
为什么被折叠?



