zoukankan      html  css  js  c++  java
  • 全排列

     

    全排列代码

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class FullSort {
    
    	private static void sort(List<String> datas, List<String> target, int size) {
    		if (target.size() == size) {
    			for (Object obj : target)
    				System.out.print(obj);
    			System.out.println();
    			return;
    		}
    		for (int i = 0; i < datas.size(); i++) {
    			List<String> newDatas = new ArrayList<String>(datas);
    			List<String> newTarget = new ArrayList<String>(target);
    			newTarget.add(newDatas.get(i));
    			newDatas.remove(i);
    			sort(newDatas, newTarget, size);
    		}
    	}
    
    	public static void main(String[] args) {
    		String[] datas = new String[] { "a", "b" };
    		int size = datas.length;
    		sort(Arrays.asList(datas), new ArrayList<String>(), size);
    	}
    
    }
    

    代码2

    改进  调用串的函数,将字符的操作变为字符串的操作,原理一样

    import java.util.ArrayList;
    import java.util.List;
    
    public class NumTest {
        public static void main(String[] args) {
            String s="ABCD";//原字符串
            List<String> result = list(s, "");//列出字符的组合,放入result
            
            System.out.println(result.size());;
            System.out.println(result);
        }
        
        /**
         * 列出基础字符串(base)的所有组合
         * @param base 以该字符串作为基础字符串,进行选择性组合。
         * @param buff 所求字符串的临时结果
         * @param result 存放所求结果
         */
        public static List<String> list(String base,String buff){
         List<String> result = new ArrayList<String>();//存放结果信息。
            if(base.length()<=0){
                result.add(buff);
            }
            for(int i=0;i<base.length();i++){
             List<String> temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i));
             result.addAll(temp);
             
            }
            
            return result;
        }
    }
    

    代码2的另一种写法

    import java.util.ArrayList;
    import java.util.List;
    
    public class NumTest {
    	
    	   public static void main(String[] args) {
    	        String s="ABCD";//原字符串
    	        List<String> result = new ArrayList<String>();//存放结果信息。
    	        list(s, "", result);//列出字符的组合,放入result
    	        System.out.println(result.size());;
    	        System.out.println(result);
    	    }
    	    
    	    /**
    	     * 列出基础字符串(base)的所有组合
    	     * @param base 以该字符串作为基础字符串,进行选择性组合。
    	     * @param buff 所求字符串的临时结果
    	     * @param result 存放所求结果
    	     */
    	    public static void list(String base,String buff,List<String> result){
    	        if(base.length()<=0){
    	            result.add(buff);
    	        }
    	        for(int i=0;i<base.length();i++){
    	            list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result);
    	        }
    	    }
    
    }
    




     

  • 相关阅读:
    Docker最全教程之使用Tencent Hub来完成CI(九)
    程序员十大热门flag,有你的吗?
    互联网寒冬,阿里Ant Design还开坑,程序员该何去何从?
    Docker最全教程——从理论到实战(八)
    开源库Magicodes.Storage正式发布
    Docker最全教程——从理论到实战(七)
    开源库支付库Magicodes.Pay发布
    产品经理如何避免被程序员打?
    Docker最全教程——从理论到实战(六)
    如何解决input file 选取相同文件后,change事件不起作用解决方法
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5637265.html
Copyright © 2011-2022 走看看