字符集的所有组合

/*
 * 输出一个字符数组中 的所有字符的所有组合。
 * 比如有字符集str={A,B,C}。应输出: A B C AB AC BA BC CA CB ABC
 * ACB BAC BCA CAB CBA
 */

 

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 
 * @author Administrator(LiuLei) Time:2013-2-24
 *
 */
public class MyTest8 {
 
 public static void play(int n,int limit,String tempStr,List<String> list){
  
  if(tempStr.length()==limit){ //满足1,2,3种排列
   System.out.print(tempStr+" ");
      return;
  }
  for(int i=n;i<list.size();i++){
      list.add(n,list.remove(i));
      tempStr+=list.get(n);
      play(n+1,limit,tempStr,list);//递归调用
       tempStr=tempStr.substring(0,tempStr.length()-1);//还原字符串
       list.add(i,list.remove(n)); //还原list集合使还原为初始状态例如{A,B,C}  } 
 }
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  String inputStr=input.next();
  List<String> arrayList=new ArrayList<String>();
  for(int i=0;i<inputStr.length();i++)
  arrayList.add(inputStr.charAt(i)+"");
  for(int j=1;j<=arrayList.size();j++)
                   play(0,j,"",arrayList);
  System.out.println();
 }

}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值