给定一个长度和字符集,如何得到所有可能的字符串组合 [英] Given a length and a set of characters, how to get all the possible string combinations

查看:244
本文介绍了给定一个长度和字符集,如何得到所有可能的字符串组合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:
  <一href="http://stackoverflow.com/questions/4240080/generating-all-permutations-of-a-given-string">Generating对一个给定的字符串所有排列

Possible Duplicate:
Generating all permutations of a given string

由于长度 N = 4,字符集 - &GT; {'A','B'} , 如何编写一些Java codeS产生所有可能的字符串包含在设定的字符长度为n?

Given a length n=4, and a set of characters -> {'a', 'b'}, how to write some java codes to produce all the possible string with that length n containing the characters in the set?

有关上面的例子中,结果应具有2 ^ 4 = 16字符串,它是:

For the example above, the result should have 2^4=16 strings, which is:

aaaa
aaab
aabb
abbb
baaa
baab
babb
bbbb
bbaa
bbab
bbba
abaa
abab
abba
baba
aaba

这是我的code片断:

here is my code snippet:

public void process(String result, String string)
{
    if(string.length() == 0)
    {
        System.out.println(result);
    }else{
        for(int i = 0; i < string.length(); i++)
        {
            String newResult = new String(result+string.charAt(i));
            String newString = new String(string.substring(0,i) + string.substring(i+1, string.length()));
            process(newResult, newString);
        }
    }
}

这似乎只是在做什么,而不是我想要的排列,....... 预先感谢您:)

That seems like only doing permutation, instead of what I want....... Thank you in advance :)

推荐答案

把它以同样的方式将计数。你专门从AAAA计数到BBBB,像二进制。

Think of it in the same way you would counting. You're technically "counting" from aaaa to bbbb, like binary.

aaaa -> 0000
aaab -> 0001
aaba -> 0010
aabb -> 0011
...
bbbb -> 1111

没有看到你已经试过,我不能帮你不止于此,但本质上则需要通过它们计数列举你的最低的元素,你的最高元素之间的所有的数字。

Without seeing what you've tried, I can't help you more than that, but essentially you need to enumerate all the "numbers" between your "lowest" element and your "highest" element by counting up through them.

对于更高的元件数量,只是把你计算在基数较高计数。对于八素,集= {A,B,C,D,E,F,G,H},你会被计算在什么本质八:

For higher element counts, just treat your counting as counting in a higher base. For eight elements, Set = {a, b, c, d, e, f, g, h}, you would be counting up in what's essentially octal:

aaaa -> 0000
aaab -> 0001
...
aaah -> 0007
aaba -> 0010
...
hhhh -> 7777

这是你列举的0-9所有组合,带4的长度,从0000计数到9999相同的方式。

It's the same way you enumerate all the combinations of 0-9 with a length of 4, by counting from 0000 to 9999.

编辑:

感谢您发布您的code。你是正确的,你在做排列组合。更好的方法是使用多组合(组合在进排序组合组重复的元素)算法,像一个讨论的这里

Thank you for posting your code. You're correct, you're doing permutations. A better way would be to use a multi-combination (combination with repeated elements in the ordererd combination set) algorithm like the one discussed here.

这篇关于给定一个长度和字符集,如何得到所有可能的字符串组合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆