输入一个字符串,长度不超过9(可能有字符重复),按字典序打印出该字符串中字符的所有排列。
import java.util.ArrayList; import java.util.TreeSet; public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> result = new ArrayList<String>(); if(str != null && str.length() > 0){ TreeSet<String> res = new TreeSet<String>(); process(str.toCharArray(), 0, res); result.addAll(res) ; } return result; } public void process(char[] str,int i,TreeSet<String> list){ if(i == str.length-1){ String val = String.valueOf(str); if(!list.contains(val)){ list.add(val); } }else{ for(int j=i; j<str.length; j++){ swap(str,i,j); process(str, i+1, list); swap(str,i,j); } } } public void swap(char[] str,int i,int j){ char temp = str[i]; str[i] = str[j]; str[j] = temp; } }