Java 如何检查单词是否可以由数组中的条目组成?
我有以下任务: 给出了“高速公路”一词。 检查该单词是否可以由数组中的条目组成: [ab、bc、Super、h、igh、way]-是; [ab,bc,Super,way]-否 我的建议是从数组中构建Trie,并根据Trie推断目标词是否可以派生 另外,我已经看到动态规划也适用于类似的问题Java 如何检查单词是否可以由数组中的条目组成?,java,algorithm,dynamic-programming,trie,Java,Algorithm,Dynamic Programming,Trie,我有以下任务: 给出了“高速公路”一词。 检查该单词是否可以由数组中的条目组成: [ab、bc、Super、h、igh、way]-是; [ab,bc,Super,way]-否 我的建议是从数组中构建Trie,并根据Trie推断目标词是否可以派生 另外,我已经看到动态规划也适用于类似的问题 您能解释一下任务的最佳解决方案吗?这里应该应用动态规划。这里的最佳子结构是: dp[i]:如果s[0,i可以由提供数组中的条目组成 dp[i]|=dp[j]&&s[j,i是数组中的一个条目 pu
您能解释一下任务的最佳解决方案吗?这里应该应用动态规划。这里的最佳子结构是: dp[i]:如果s[0,i可以由提供数组中的条目组成 dp[i]|=dp[j]&&s[j,i是数组中的一个条目
public boolean wordBreak(String s, List<String> wordDict) {
Set<String> wordDictSet = new HashSet(wordDict);
boolean[] dp = new boolean[s.length() + 1];
dp[0] = true;
for (int i = 1; i <= s.length(); i++) {
for (int j = 0; j < i; j++) {
if (dp[j] && wordDictSet.contains(s.substring(j, i))) {
dp[i] = true;
break;
}
}
}
return dp[s.length()];
}
我建议您根据自己的建议开始工作,遇到任何问题时再回来。这有点过于宽泛,只包含您的作业。@f1sh我建议您删除您的评论。这不是我的作业,是我最近在Amazon@Pavelf1sh的评论恰到好处。你试过了兴。只是因为它不是为了学校:你想要答案,你有问题->这就是作业。然后这将是一个代码审查的问题。我的问题和继续并关闭他的问题之间有什么区别post@PavelTrie会使它变得复杂,并且不确定它是否能工作。在我看来,动态规划是最合适的。