import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; public class PermutationII { public static void main(String[] args) { String str = "aba"; ArrayList<String> list = permutation(str); for(String i: list) System.out.print(i + " "); } public static ArrayList<String> permutation(String str){ ArrayList<String> re = new ArrayList<String>(); if(str == null || str.length() == 0) return re; HashSet<String> set = new HashSet<String>(); fun(set, str.toCharArray(), 0); re.addAll(set); Collections.sort(re); return re; } public static void fun(HashSet<String> re, char[] chas, int k){ if(k == chas.length){ re.add(new String(chas)); return; } for(int i = k; i < chas.length; i++){ swap(chas, i, k); fun(re, chas, k+1); swap(chas, i, k); } } public static void swap(char[] chas, int i, int j){ if(i != j){ char tmp = chas[i]; chas[i] = chas[j]; chas[j] = tmp; } } }
原文:http://www.cnblogs.com/CodeCafe/p/6718912.html