【发布时间】:2017-08-01 12:07:44
【问题描述】:
我正在尝试使用partitioning 的String 来解决这个问题。我们以“abc”为例。
有 4 个partitions - {a,bc}, {ab,c}, {abc}, {a,b,c}.
我正在尝试编写一个recursive 方法来生成partitions 到ArrayList 的Lists,但我很难这样做。非常感谢您的帮助!
static List<List<String>> partitions = new ArrayList<>();
static List<String> partition = new ArrayList<>();
static void recurse(int size, String str) {
if (str.length() <= size) {
return;
}
partition.add(str.substring(0, size));
for (int i = 1; i < str.length(); i++) {
if (size < str.length())
recurse(i, str.substring(size));
}
partitions.add(partition);
}
现在当我调用这个方法时它会输出
[[, a, b, ab], [, a, b, ab], [, a, b, ab], [, a, b, ab]]
而不是[[a, b, c], [a, bc], [ab, c], [abc]]
,所以我一定是做错了什么:
recurse(0, "abc");
System.out.println(partitions.toString());
【问题讨论】:
-
你传入一个大小为 3 的字符串和一个长度为 3 的字符串。递归方法中的第一次检查说如果它们相等则返回
-
你说得对,我修好了,但输出还是不对。
标签: java string algorithm recursion