输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
限制:
- 1 <= s 的长度 <= 8
分析:
方法:回溯+DFS
这道题要求返回所有的排列,而排列最容易让人想到的就是交换顺序,拿 "abc" 举例:
- 先固定 a 不动,交换 b 和 c,这样就得到了两个答案 abc 和 acb
- a 和 b 交换,固定 b 不动,变换 a 和 c,这样得到答案 bac 和 bca
- a 和 c 交换,固定 c 不动,交换 a 和 b,这样得到答案 cba 和 cab
三个以上字母也是如此&