说我有一个字符串A B C D
- 我希望最终得到List<List<String>>
,其中包含以下组合:
[A,B,D,C]
[A,B C D]
[A B, C D]
[A B C, D]
[A, B C, D]
etc...
发现了大量已回答的类似请求的问题,其中人们根据单个字符串的子字符串要求所有组合,但无法根据我的需要进行调整。
我非常感谢你的帮助!
答案 0 :(得分:1)
您可以尝试通过递归来完成。 左右两个字符串。将最右边的字符移到右边的字符串,重复,直到左边的字符串中只有1个字符。每次执行此操作时,请将相同的功能应用于正确的字符串。
所以如果你有&#34; ABCD&#34;,那就会给你:
MyClaimsPrincipal
完全消耗你得到:
"ABCD"
"ABC" f("D")
"AB" f("CD")
"A" f("BCD")
给你:
f("ABCD") {
"ABCD"
"ABC" f("D")
f("D") {
"D"
}
"AB" f("CD")
f("CD") {
"CD"
"C" f("D")
f("D") {
"D"
}
}
"A" f("BCD")
f("BCD") {
"BCD"
"BC" f("D")
f("D") {
"D"
}
"B" f("CD")
f("CD") {
"CD"
"C" f("D")
f("D") {
"D"
}
}
}
}
答案 1 :(得分:0)
请注意,插入逗号有N-1
个位置。所以有2个 n-1 的放置变体,我们可以使用范围0..2 n-1 -1在循环中遍历所有数字并得到相应的组合。
例如,值5 = 101 binary 对应于第一个和最后一个位置的逗号(根据设置位),因此组合为[A, B C, D]