排列组合的递归算法

import java.util.*;
public class PermutationAndCombination
{
 /**
 * author:54powerman@163.com
 * blog:http://blog.sina.com.cn/m/54powerman
 **/
 public static void main(String[] args)
 {
  long date1=System.currentTimeMillis();
  List list=count("01234567");//89abcdefghijklmnopqrstuvwxyz
  for(int i=0;i<list.size();i++)
  {
   System.out.println(list.get(i));
  }
  System.out.println("Process complete!Get "+list.size()+" strings and take ");
  System.out.print(System.currentTimeMillis()-date1+" ms");
 }
 public static List count(String strData)
 {
  List list = new ArrayList();
  if(strData.length()<2)
  {
   list.add(strData);
   return list;
  }
  else if(strData.length()==2)
  {
   String str1=strData.substring(0,1);
   String str2=strData.substring(1);
   list.add(strData);
   list.add(str2+str1);
  }
  else
  {
   for(int i=0;i<strData.length();i++)
   {
    String strTmp=strData.substring(i,i+1);
    List listTmp=count(strData.substring(0,i)+strData.substring(i+1,strData.length()));
    for(int j=0;j<listTmp.size();j++)
    {
     list.add(strTmp+listTmp.get(j).toString());
    }
   }
  }
  return list;
 }
};
写在这里不是因为这算法如何,而是,只是一道题目的解答——请用递归算法找出字符串中字符的排列组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值