我一直在處理以下遞歸問題一段時間,但一直未能弄清楚。基本上,你有某種由某些詞組成的句子,其中所有詞彙只是卡在一起,沒有間隔。這個想法是找出可用於創建句子的所有可能的單詞組合的數量。遞歸?字符串中的組合
例如,
- 單詞:OOK,ookook
- 句子:ookookook
- 解決方案:{OOK,OOK,OOK},{ookook,OOK},{OOK,ookook}。
又如:
- 單詞:OOGA,oogam,oogum,莫克,OOK
- 句子:oogamookoogumook
- 解決方案:{OOGA,莫克,oogum,OOK},{oogam, OOK,oogum,OOK}
我已經嘗試了很多東西,終於放棄,努力做手工......
public static int WAYS(String word) {
int ways = 1;
for (int i = 0; i < word.length(); i++) {
try{
if(word.substring(i, i - 2).equals("ug")){
if(word.substring(i - 4, i - 2).equals("ug")){
ways++;
}
}
else if(word.substring(i, i - 3).contains("ook")){
System.out.println(word.substring(i-6, i-3));
if(word.substring(i - 6, i - 3).equals("ook")){
ways++;
}
if(word.charAt(i - 4) == 'm'){
if(word.substring(i - 8, i - 4).equals("ooga") || word.substring(i - 8, i - 4).equals("oogu")){
ways++;
}
}
}
else if(word.substring(i, i - 4).contains("mook")){
if(word.substring(i - 8, i - 4).contains("mook")){
ways++;
}
}
if(word.substring(i, i - 2).equals("oog")){
if(word.charAt(i + 2) == 'm'){
if(word.charAt(i + 1) == 'a' || word.charAt(i + 1) == 'u'){
ways++;
}
}
}
} catch(Exception e){
continue;
}
}
return ways;
}
但它沒有奏效。有人請給我一個想法或使用遞歸來解決這個問題的例子嗎?
你可以顯示你的遞歸嘗試?你確實需要在這個問題上使用遞歸。像你發佈的非遞歸解決方案只是不會工作。 –
@JohnKugelman我的遞歸嘗試真的很糟糕,因爲我不明白如何正確解決這個問題與遞歸。我只需要了解如何解決這些類型問題的基礎知識。 – BorisMediaProds