从前往后通过int i遍历遍历, 看看前i个是否能分割后被字典找到, 假如可以就设置i下标的boolean值为true, 这个boolean值可以被后面的遍历所利用, 相当于记录下了之前的结果.
import java.util.Set;
public class Solution {
public boolean wordBreak(String s, Set<String> dict) {
if (dict.isEmpty()) {
return false;
}
//true表示前index个单词都是可以被分割后被字典查到的
boolean[] canBreak = new boolean[s.length() + 1];
canBreak[0] = true;
for (int i = 1; i < s.length() + 1; i++) {
for (int j = i - 1; j >= 0; j--) {
//前j个可分割, 然后j~i可找到, 所以i可分割
if (canBreak[j] && dict.contains(s.substring(j, i))) {
canBreak[i] = true;
break;
}
}
}
return canBreak[s.length()];
}
}

京公网安备 11010502036488号