如何找到字符串中所有可能的字母组合?

发布于 2024-11-27 03:43:28 字数 198 浏览 3 评论 0原文

给定一个字符串,我需要找到该字符串的所有可能的字母组合。我实现这一目标的最佳方法是什么? 示例:

abc

结果:

abc
acb
bca
bac
cab
cba

到目前为止我什么都没有。我不是要代码。我只是问最好的方法?算法?伪代码?也许是讨论?

I am given a string and i need to find all possible letter combinations of this string. What is the best way I can achieve this?
example:

abc

result:

abc
acb
bca
bac
cab
cba

i have nothing so far. i am not asking for code. i am just asking for the best way to do it? an algorithm? a pseudocode? maybe a discussion?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

空气里的味道 2024-12-04 03:43:29

您可以对其进行排序,然后使用 std::next_permutation

看一下示例: http://www .cplusplus.com/reference/algorithm/next_permutation/

you can sort it then use std::next_permutation

take a look at the example: http://www.cplusplus.com/reference/algorithm/next_permutation/

反差帅 2024-12-04 03:43:29

您想要组合或排列吗?例如,如果您的字符串是“abbc”,您想看到“bbac”一次还是两次?

如果您确实想要排列,可以使用 std::next_permutation ,它会为您处理所有工作。

Do you want combinations or permutations? For example, if your string is "abbc" do you want to see "bbac" once or twice?

If you actually want permutations you can use std::next_permutation and it'll take care of all the work for you.

对不⑦ 2024-12-04 03:43:29

如果您想要组合(与顺序无关),您可以使用组合查找算法,例如找到 此处此处。或者,您可以使用 this (组合生成器的 Java 实现,并通过一个示例演示了什么 或者,如果您想要

帖子中列出的内容(排列),那么您可以(对于 C++)使用在中找到的 std::next_permutation ,您可以在 std::next_permutation 此处

希望这会有所帮助。:)

If you want the combinations (order independant) You can use a combination finding algorithm such as that found either here or here. Alternatively, you can use this (a java implementation of a combination generator, with an example demonstrating what you want.

Alternatively, if you want what you have listed in your post (the permutations), then you can (for C++) use std::next_permutation found in <algorithm.h>. You can find more information on std::next_permutation here.

Hope this helps. :)

野生奥特曼 2024-12-04 03:43:29

在 C++ 中,std::next_permutation

std::string s = "abc";
do
{
  std::cout << s << std::endl;
} while (std::next_permutation(s.begin(), s.end()));

In C++, std::next_permutation:

std::string s = "abc";
do
{
  std::cout << s << std::endl;
} while (std::next_permutation(s.begin(), s.end()));
酒浓于脸红 2024-12-04 03:43:29

复制自旧的维基百科文章;

对于每个数字 k,0 ≤ k < n!,以下算法在序列 s 上生成唯一的排列。

function permutation(k, s) {
     for j = 2 to length(s) {
        swap s[(k mod j) + 1] with s[j]; // note that our array is indexed starting at 1
        k := k / j;        // integer division cuts off the remainder
     }
     return s;
}

Copied from an old Wikipedia article;

For every number k, with 0 ≤ k < n!, the following algorithm generates a unique permutation on sequence s.

function permutation(k, s) {
     for j = 2 to length(s) {
        swap s[(k mod j) + 1] with s[j]; // note that our array is indexed starting at 1
        k := k / j;        // integer division cuts off the remainder
     }
     return s;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文