package com.pb.demo.packclass.demo1; import java.util.HashSet; /** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 例如: 原始字符串是"abc",打印得到下列所有组合情况 "a" "b" "c" "ab" "bc" "ca" "ba" "cb" "ac" "abc" "acb" "bac" "bca" "cab" "cba" * @author Denny * 思路: * 1.截取字符串,每次载取一个 * 2.把截取到的一个做的前缀,添加到集合中 * 3.和剩下的组合 * 4.长度为1时,用前缀和剩下的组合添加到集合 * 5.使用递归 * */ public class Demo9 { static HashSet<String> set=new HashSet<String>(); public static void main(String[] args) { String s="abc"; getString(s,""); System.out.println(set); System.out.println(set.size()); } public static void getString(String s,String pre){ if(s.length()==1){ set.add(pre+s); return; }else{ for (int i = 0; i < s.length(); i++) { StringBuilder sb=new StringBuilder(s); String str=pre+s.substring(i, i+1); set.add(str); getString(sb.deleteCharAt(i).toString(),str); } } } }
结果:
[a, ab, acb, bc, bca, ac, b, abc, c, cba, bac, cab, ca, ba, cb]
15