public class Solution {
public boolean canBreak(String input, String[] dict) {
Set<String> dictSet = new HashSet<>();
for (String s : dict) {
dictSet.add(s);
}
boolean[] canBreak = new boolean[input.length() + 1];
canBreak[0] = true;
for (int i = 1; i <= input.length(); i++) {
for (int j = 0; j < i; j++) {
if (dictSet.contains(input.substring(j, i)) && canBreak[j]) {
canBreak[i] = true;
}
}
}
return canBreak[input.length()];
}
}
High Level:
detail:用一个Set<String>存 dict
TC: O(n^3); substring API时间复杂度是O(n), hashSet.contains时间复杂度是O(1), 总共
SC: O(n)