【发布时间】:2017-03-15 19:18:07
【问题描述】:
我正在尝试编写一个方法,该方法接受一个字符串的输入,并通过检查字符串的某些部分是否与字典单词匹配,返回一个包含逻辑空格的可能字符串列表。例如:
例子:
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 循环是问题所在,但我似乎找不到错误。我正在打印出来
be
cause
to
day
us
use
a
today
us
use
a
because
to
day
us
use
a
today
us
use
a
任何帮助将不胜感激:)
【问题讨论】:
-
注意详细说明什么不适合您。我在您的帖子中没有看到任何问题
-
我重新格式化了预期和实际输出;我希望能澄清一些事情。
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。具体来说,您发布的代码应该产生给定的输出。你的不能自己运行。
-
我建议你编写一个驱动程序来构建一个小字典并调用你的例程。还要插入一些有用的跟踪打印语句来显示程序流中发生的事情。
标签: java recursion arrayofstring