我正在尝试了解以下 Java + 动态编程实现(https://pingzhblog.wordpress.com/2015/09/17/word-break/):
public class Solution {
public boolean wordBreak(String s, Set<String> wordDict) {
if(s == null) {
return false;
}
boolean[] wordBreakDp = new boolean[s.length() + 1];
wordBreakDp[0] = true;
for(int i = 1; i <= s.length(); i++) {
for(int j = 0; j < i; j++) {
String word = s.substring(j, i);
if(wordBreakDp[j] && wordDict.contains(word)) {
wordBreakDp[i] = true;
break;
}
}
}//end for i
return wordBreakDp[s.length()];
}
}
String s = "abcxyz"
但是需要用and进行一些澄清Set <String> wordDict = ["z", "xy", "ab", "c"]
。
我仍然不清楚wordBreakDp[]
代表什么,并将其设置为 true 意味着。
所以我做了尝试并得到了wordBreakDP[2,3,5,6]=true
,但是这些索引说明了什么?我不能检查一下,i=6
因为我们要检查的是最后一个索引是否wordBreakDp[]
为真,wordBreakDp[s.length()];
?
比如说我得到了ab
for s.substring(0, 2);
,但是我们怎么能假设下一个循环 ,s.substring(1, 2);
没有用,只是break;
在循环之外呢?
谢谢