• 全排列问题


    1. 如何输出字符串的所有组合?
      问题描述:假如字符串中所有字符都不重复,如何输出字符串的所有组合。例如:abca,结果应是a,b,c,ab,ac,bc,abc. 最容易想到的就是递归了,但效率会变得很差.因为栈被调用了2^n次方,为了提高效率,可以构造一个长度为n的01字符串,表示输出结果中是否包含某个字符,例如:001->c,010->b,101->ac......,
    所以原题就是要求输出"001"-"111"这2^n-1个组合对应的字符串。

    Demo_1:

    import java.util.*;
    class Test {
    	private static ArrayList<String> combineString(String s) {
    		int len = s.length();
    		ArrayList<String> list = new ArrayList<String>(); 
    		int count = (int) (Math.pow(2, len));
    		for(int i = 1; i < count; ++i){
    			String temp = "";
    			String str = Integer.toBinaryString(i);
    			while(str.length() < len){
    				str = "0" + str;
    			}
    		    for(int j = 0; j < str.length(); ++j){
    		    	if(str.charAt(j) == '1'){
    		    		temp += s.charAt(j);
    		    	}
    		    }
    		    list.add(temp);
    		}
    		return list;
    	}
    	public static void main(String[] args) {
    		double startTime = System.currentTimeMillis();
    		String s = "abc";
    		ArrayList<String> result = combineString(s);
    		for (String r : result) {
    			System.out.println(r);
    		}
    		double endTime = System.currentTimeMillis();
    		System.out.println("程序运行时间:"+(endTime-startTime)/1000+" ms");
    	}
    }
    

     运行结果:

    c
    b
    bc
    a
    ac
    ab
    abc
    程序运行时间:0.001 ms

  • 相关阅读:
    JavaScript 操作 Cookie
    Java监控文件夹变化
    Cookie与Session的区别
    常用插件
    Plugin 'org.springframework.boot:springbootmavenplugin:' not found
    mysql安装(windows)
    idea 安装社区版
    linux安装tomcat
    将克隆的项目上传到自己的github
    tomcat安装配置
  • 原文地址:https://www.cnblogs.com/bosongokay/p/6810047.html
Copyright © 2020-2023  润新知