package org.example.permandcombine; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * @author xianzhe.ma * @date 2021/11/3 */ public class Permutation { public static ArrayList<String> Permutation(String str) { int length = str.length(); List<String> inputList = new ArrayList<>(); for (int i = 0;i<length;i++) { char c = str.charAt(i); String temp = String.valueOf(c); inputList.add(temp); } String[] array = new String[length]; inputList.toArray(array); ArrayList<String> result = new ArrayList<>(); doPerm(array, 0, length, result); Set<String> set = new HashSet<>(); set.addAll(result); ArrayList<String> result2 = new ArrayList<>(); result2.addAll(set); return result2; } public static void main (String[] args) { String str = "ABC"; ArrayList<String> list = Permutation(str); for (String str1 : list) { System.out.println(str1); } } public static void doPerm(String[] array, int start, int end, ArrayList<String> result) { if (start == end) { int size = array.length; StringBuilder stringBuilder = new StringBuilder(); for (int i=0;i<size;i++) { stringBuilder.append(array[i]); } result.add(stringBuilder.toString()); return; } for (int i= start;i<end;i++) { swap(array, start, i); doPerm(array,start+1,end, result); swap(array, start, i); } } public static void swap(String[] array, int i, int j) { String temp = array[i]; array[i] = array[j]; array[j] = temp; } }