题目:
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a, b, c所能排列出来的所有字符串abc, acb, bac, bca, cab和cba。
解题思路:
- 我们把一个字符串看成由两部分组成:第一部分是它的第一个字符,第二部分是后面的所有字符,求整个字符串的排列,可以看成两步:
- 第一步求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。下图就是分别把第一个字符a和后面的b、c等字符交换的情形:
- 第二步固定第一个字符,求后面所有字符的排列。这个时候我们仍把后面的所有字符分为两部分:后面的字符的第一个字符,以及这个字符之后的所有字符。然后把第一个字符逐一和它后面的字符交换。
代码:
牛客网通过,leetcode未通过!!
class Solution