题目:输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串
abc
,则打印出由字符a、b、c
所能排列出来的所有字符串abc、acb、bac、bca、cab
和cba
。
我们要打印出字符串中字符的所有排列,就是要让字符能够出现在所有的位置上。我们的方法如下,首先将字符串分为两部分,第一部分只有首字符一个字符,第二部分是剩下的部分。接着我们分为两步出来
- 第一步让所有的字符都能够出现在首位,将首字符依次与后面的字符进行交换,这样能够保证首字符可以出现在后面的每个位置上,也可以保证后面的字符出现在第一个位置上
- 第二步我们固定第一个字符,接着处理第二部分,而第二部分的处理也是将第二部分也分为两部分,首字符与剩下的部分两部分,这是一个递归的过程,通过这样的处理,我们确保每个字符都能够出现在每个位置上
代码如下:
public static void permutation(String string) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Coder!
评论