(1) 一个字符串,根据输入参数m,找出字符串的m个字符的所有字符串

/**
 * 	有一个字符串,根据输入参数m,找出字符串的m个字符的所有字符串
	例如: 
	String str ="abc", m=2  得到结果是 "ab" "ac" "bc"
	String str ="abcd" , m=3 得到结果是"abc" "acd" "bcd" "abd"
	
	注:程序摘自网上
 *
 */

public static void main(String[] args) {
		List<String> list = choose("abcde",3);
		for (String string : list) {
			System.out.println(string);
		}
	}

	public static List<String> choose(String target, int m) {
		List<String> resultList = new LinkedList<>();
		doChoose(resultList, target, "", m, 0);
		return resultList;
	}

	private static void doChoose(List<String> resultList, String target,
			String resultStr, int m, int head) {

		// 递归头
		if (resultStr.length() == m) {
			resultList.add(resultStr);
			return;
		}

		// 递归体
		for (int i = head; i < target.length(); i++) {
			doChoose(resultList, target, resultStr + target.charAt(i), m, i + 1);
		}
	}


原文地址:https://www.cnblogs.com/xiaozhang2014/p/5297289.html