打印出包含大写字母的字母数字字符串的所有排列

时间:2016-02-10 19:55:34

标签: permutation

如何打印包括大写字符串的字符串的所有排列?

给定字符串:" abc"

结果应该是:

abc
Abc
bac
Bac
...
...
CBA

我坚持使用大写......

1 个答案:

答案 0 :(得分:1)

因此,您当前的解决方案为您提供小写的所有排列,但不是大写的排列?

您可以先将自己限制在小写解决方案中:

abc
bac
...
...
cba

然后将每个解决方案处理到上/下混合器。

这台调音台非常简单。对于3个元素,您可以构建长度为3的二进制数,其中每个位置将该位置的字符标记为低(0)或高(1)字符,这是2³的可能性,或者换句话说,从000到111这是从0到7的十进制的8种可能性。

因此,100 (*) abc到达Abc,011 (*) abc到达aBC,依此类推。

所以你只需要一个调用这样一个函数的循环,它可以进行转换,如:

// s="abc" for example
function upperLowerMixer (s) 
{
  max=2 ^ s.size
  for (i = 0; i < max; ++i)
    raiseCharacters (s, i)
}