首页 > 其他 > 详细

字符串全排列

时间:2017-04-16 15:47:55      阅读:291      评论:0      收藏:0      [点我收藏+]
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!