我正在尝试编写一个方法,它接受一个字符串的输入,并通过检查字符串的部分字符是否与字典单词匹配来返回列表中可能包含逻辑空间的字符串。例如:使用递归的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