java - 字符串的有序固定长度组合

标签 java c++ c string combinations

我需要编写一个函数来查找字符串可能的固定长度组合。需要的是,并非所有组合都是必需的。例如,如果字符串是“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/

相关文章:

c - 为 RSA OpenSSL 设置特定 key

java - 在android中编辑简单列表中的文本

java - 如何在 java 中显示 ms outlook 的通知,如弹出窗口?

c++ - RSA算法——无法验证d

c++ - 如何避免类名和方法名重名?

c++ - 为什么在创建一个vector<A>时,类A的构造函数和析构函数只调用一次?

c++ - Windows 窗体可视化。如何使常量。更新字段?

java - PowerShell 脚本 - 提取、复制和删除 zip 文件不起作用

Java使用输入流从外部程序读取标准输出

c++ - 用于 gcc 或 clang 的 LTO 是否可以跨 C 和 C++ 方法进行优化