我正在嘗試編寫一個方法,它接受一個字符串的輸入,並通過檢查字符串的部分字符是否與字典單詞匹配來返回列表中可能包含邏輯空間的字符串。例如:使用遞歸的FindSpaces方法java
例子:
input: "becausetodayuseat"
Output: {
"be cause to day us eat ",
"be cause to day use at ",
"be cause today us eat ",
"be cause today use at ",
"because to day us eat ",
"because to day use at ",
"because today us eat ",
"because today use at "
}
我的代碼是目前
public static String[] space(String[] dict, String s) {
LinkedList<String> ret = new LinkedList<String>();
// base case
if (s.length() == 0) {
String[] r = { "" };
return r;
}
for (int i = 1; i < s.length(); i++) {
String prefix = s.substring(0, i);
if (inDictionary(dict, prefix)) {
prefix = prefix + " ";
ret.add(prefix);
String suffix = s.substring(i);
String[] end = space(dict,suffix);
//System.out.println(end.length);
for (int j = 0; j < end.length; ++j) {
ret.add(end[j]);
}
}
}
// This line converts LinkedList<String> to String []
return ret.toArray(new String[0]);
我知道for循環的問題,但我似乎無法找到的bug。我打印出
be
cause
to
day
us
use
a
today
us
use
a
because
to
day
us
use
a
today
us
use
a
任何幫助,將不勝感激:)
詳細地談一談究竟是不是爲你工作。我在您的帖子中看不到問題 – Coder
我重新格式化了預期和實際產出;我希望澄清事情。 – Prune
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。具體而言,您發佈的代碼應該會生成給定的輸出。你的並不是獨立運行的。 – Prune