私は、スペースを含む単語の文字列が削除された DP 問題に取り組んでおり、文字列を個々の英語の単語に分割するために、ボタンアップとメモ化の両方のバージョンを実装する必要があります。ただし、ボタンアップバージョンを入手しましたが、メモ化は少し複雑なようです。
/* Split a string into individual english words
* @String str the str to be splitted
* @Return a sequence of words separated by space if successful,
null otherwise
*/
public static String buttom_up_split(String str){
int len = str.length();
int[] S = new int[len+1];
/*Stores all the valid strings*/
String[] result = new String[len+1];
/*Initialize the array*/
for(int i=0; i <= len; i++){
S[i] = -1;
}
S[0] =0;
for(int i=0; i < len; i++){
if(S[i] != -1){
for(int j= i+1; j <= len; j++){
String sub = str.substring(i, j);
int k = j;
if(isValidEnglishWord(sub)){
S[k] = 1; //set true indicates a valid split
/*Add space between words*/
if(result[i] != null){
/*Add the substring to the existing words*/
result[i+ sub.length()] = result[i] + " " + sub;
}
else{
/*The first word*/
result[i+ sub.length()] = sub;
}
}
}
}
}
return result[len]; //return the last element of the array
}
この buttom_up_version をメモ化されたバージョンに変換する方法を本当に混乱させました。誰かが助けてくれることを願っています..