力扣笔记-字符串的排列
题目描述:
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = “abc”
输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]
思路:
全排列问题,回溯得到每一种结果,使用HashSet去重
过程分为两个步骤:
第一步:把字符串看成两个部分,首字符和剩余字符。求出所有可能出现在第一个位置的首字符,遍历整个字符串,将当前首字符和剩余每一个字符交换。
第二步:固定首字符,将剩余字符再按照第一步计算所有可能出现的剩余字符的首字符,再固定,再排列…这样递归下去最终会得到所有排列结果。
java代码:
class Solution {
Set<String> retSet = new HashSet<>();
public String[