如何打印包括大写字符串的字符串的所有排列?
给定字符串:" abc"
结果应该是:
abc
Abc
bac
Bac
...
...
CBA
我坚持使用大写......
答案 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)
}