【正确答案】这道题主要考察对递归的理解,可以采用递归的方法来实现。当然也可以使用非递归的方法来实现,但是与递归法相比,非递归法难度增加了很多。下面分别介绍这两种方法。
方法一:递归法 下面以字符串abc为例介绍对字符串进行全排列的方法。具体步骤如下:
(1)首先固定第一个字符a,然后对后面的两个字符b与c进行全排列;
(2)交换第一个字符与其后面的字符,即交换a与b,然后固定第一个字符b,接着对后面的两个字符a与c进行全排列;
(3)由于第(2)步交换了a和b破坏了字符串原来的顺序,因此,需要再次交换a和b使其恢复到原来的顺序,然后交换第一个字符与第三个字符(交换a和c),接着固定第一个字符c,对后面的两个字符a与b求全排列。
在对字符串求全排列的时候就可以采用递归的方式来求解,实现方法如下图所示:
【答案解析】[考点] 如何求一个字符串的所有排列