目录结构
1.题目
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
限制:
1 <= s 的长度 <= 8
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
逐个增加字符,插位构造。
public class Offer38 {
@Test
public void test() {
System.out.println(Arrays.toString(permutation("aac")));
}
public String[] permutation(String s) {
Set<String> stringList = new HashSet<>();
stringList.add(String.valueOf(s.charAt(0)));
for (char c : s.substring(1).toCharArray()) {
Set<String> tmpList = new HashSet<>();
for (String str : stringList) {
for (int i = 0; i <= str.length(); i++) {
tmpList.add(str.substring(0, i) + c + str.substring(i));
}
}
stringList = tmpList;
}
return stringList.toArray(new String[0]);
}
}