且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

排列组合的递归算法

更新时间:2022-06-18 06:59:41

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;
 }
};
写在这里不是因为这算法如何,而是,只是一道题目的解答——请用递归算法找出字符串中字符的排列组合。