首页 > 编程语言 > 详细

含重复字符的字符串的全排列问题(Java)

时间:2016-05-06 15:14:26      阅读:208      评论:0      收藏:0      [点我收藏+]

本代码既可以输出重复和不重复字符串的全排列

/**
 * 含重复字符的字符串的全排列问题
 * 
 *
 */
public class S_28 {
    public static int count = 0;
    public static void  main(String[] args){
        char[] list = {‘a‘,‘b‘,‘c‘};
        char[] list1 = {‘a‘,‘b‘,‘b‘};
        //permutation(list);
        permutation(list1);
        System.out.println("all numbers: "+ count);
    }
    public static void permutation(char list[]) {
        if(list == null)
            return;
        else
            permutation(list,0,list.length-1);
    }
    private static void permutation(char[] list, int start, int end) {
        if(start == end){
            //System.out.println(list);
            for(int i=0;i<=end;i++){  

                System.out.print(list[i]);  

            }  
            count++;

            System.out.println(); 
        }
        else{
            for(int i = start;i<=end;++i){
                if(isSwap(list,start,i)){
                    Swap(list,start,i);
                    permutation(list, start+1, end);
                    Swap(list,start,i);

                }
            }
        }
    }
     public static void Swap(char list[], int i, int j) {
          char temp = list[i];
          list[i] = list[j];
          list[j] = temp;
    }
     //判断当前"i"处的字符是否之前已经出现过,出现过则返回false,不交换
    private static boolean isSwap(char[] list, int start, int i) {
        for(int k = start; k<i;k++)
            if(list[k] == list[i])
                return false;
        return true;
    }

上述代码数组,list和list1的全排列的最终结果输出如下

    list数组的全排列结果:

技术分享

    list1数组的全排列结果:

技术分享

含重复字符的字符串的全排列问题(Java)

原文:http://blog.csdn.net/baidu_22405691/article/details/51325385

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