字符串的排列
/*&输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
*/
import java.util.*;
public class Solution {
    public ArrayList<String> Permutation(String str) {
  	ArrayList<String> list=new ArrayList<String>();
        if(str.length()<1)
        	return list;
        else{
        	HashSet<String> set=new HashSet<String>();
        	fun(set,str.toCharArray(),0);
             list.addAll(set);
            Collections.sort(list);
             return list;
           }
       }
                   
      
    
	private static void fun(HashSet<String> set, char[] chars, int k) {
		// TODO Auto-generated method stub
		if(k==chars.length) {
			set.add(new String(chars) );
			
		}
		for(int i=k;i<chars.length;i++) {
			reverse(chars,i,k);
			fun(set,chars,k+1);
			reverse(chars,i,k);
		}
	}
	private static void reverse(char[] chars,int i,int j) {
    	
    	char temp=chars[i];
    	chars[i]=chars[j];
    	chars[j]=temp;
    	// return newstring;
    }
   
}
                    
                
                
            
        
浙公网安备 33010602011771号