Word Break III
public class Solution {
/*
* @param : A string
* @param : A set of word
* @return: the number of possible sentences.
*/
public int wordBreak3(String s, Set<String> dict) {
int n = s.length();
String lowerS = s.toLowerCase();
Set<String> lowerDict = new HashSet<String>();
for(String str : dict) {
lowerDict.add(str.toLowerCase());
}
int[][] dp = new int[n][n];
for(int i = 0; i < n; i++){
for(int j = i; j < n;j++){
String sub = lowerS.substring(i, j + 1);
if(lowerDict.contains(sub)){
dp[i][j] = 1;
}
}
}
for(int i = 0; i < n; i++){
for(int j = i; j < n; j++){
for(int k = i; k < j; k++){
dp[i][j] += (dp[i][k] * dp[k + 1][j]);
}
}
}
return dp[0][n - 1];
}
}
最后更新于
这有帮助吗?