我需要编写一个函数来查找字符串可能的固定长度组合。需要的是,并非所有组合都是必需的。例如,如果字符串是“abcde”,并且我们需要长度为3的combis,那么该函数必须返回以下内容:
abc
abd
abe
acd
ace
ade
bcd
bde
bce
cde
没有别的。我一直在尝试使用递归,但事情并没有按预期进行。我也看到过一些类似的问题,但无法从中得到太多信息。算法或代码(C、C++、Java),欢迎任何帮助。谢谢。!
注意:组合需要订购。也就是说,字符的顺序应与输入字符串中的顺序相同。
最佳答案
如果有三个输入,则有三个索引,最初设置为输入字符串的前三个索引。打印出来,然后将最后一个索引加一,并打印出所有索引。继续,直到到达输入字符串的末尾,然后增加第二个索引并将第三个索引重置为第二个索引之后的下一个索引。继续,直到第二个索引是倒数第二个字符,然后增加第一个索引,并将第二个和第三个按连续顺序放置在第一个索引之后。继续...
让我尝试说明一下:
Input: [abcde] ^^^ 123 Output: abc Next iteration: Input: [abcde] ^^ ^ 12 3 Output: abd Next iteration: Input: [abcde] ^^ ^ 12 3 Output: abe Next iteration: Input: [abcde] ^ ^^ 1 23 Output: acd Next iteration: Input: [abcde] ^ ^ ^ 1 2 3 Output: ace Next iteration: Input: [abcde] ^^^ 123 Output: bcd Next iteration: Input: [abcde] ^^ ^ 12 3 Output: bce Next iteration: Input: [abcde] ^ ^^ 1 23 Output: bde Next iteration: Input: [abcde] ^^^ 123 Output: cde
关于java - 字符串的有序固定长度组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035147/