java实现字符串排列组合问题

  

本文为大家介绍了java实现字符串排列组合问题,供大家参考,具体内容如下
  

        进口java.util.ArrayList;   进口java.util.Collections;/* *   *输入一个字符串,按字典序打印出该字符串中字符的所有排列,例如输入字符串abc,则打印出由字符a, b, c所能排列出来的所有字符串abc, acb, bac,   * bca,出租车和cba。   *   * @author pomay   *   */公开课Solution_stringarrange   {   公共ArrayList排列(String str)   {   如果(str==null)   返回null;   ArrayList列表=new ArrayList ();   char [] pStr=str.toCharArray ();      排列(pStr 0列表);   Collections.sort(列表);   返回列表;   }      静态孔隙排列(char [] str, int, ArrayList列表)   {//如果为空   如果(str==null)   返回;//如果我指向了最后一个字符   如果(我==str.length - 1)   {   如果(list.contains (String.valueOf (str)))   返回;   list.add (String.valueOf (str));   其他}   {//我指向当前我们做排列操作的字符串的第一个字符   for (int j=我;j & lt;str.length;j + +)   {//把做排列操作的字符串的第一个字符和后面的所有字符交换   char temp=str [j];   str [j]=str(我);   str[我]=temp;//交换后对我后面的字符串递归做排列操作   排列(str,我+ 1,列表);//每一轮结束后换回来进行下一轮排列操作   temp=str [j];   str [j]=str(我);   str[我]=temp;   }   }      }      公共静态void main (String [] args)   {   字符串str=耙帐跽埂?   Solution_stringarrange changestring=new Solution_stringarrange ();   ArrayList列表=changestring.Permutation (str);   for (int i=0;我& lt;list.size ();我+ +)   {   System.out.print (list.get(我)+ " ");   }   }   }   之前      

组合:
  

  

要么选择长度为n的字符串中的第一个字符,那么要在其余的长度n - 1的字符串中选择m - 1个字符
  要么不选择长度为n的字符串中的第一个字符,那么要在其余的长度n - 1的字符串中选择m个字符
  

        进口java.util.ArrayList;   进口并不知道;/* *   *输入一个字符串,按字典序打印出该字符串中字符的所有组合,例如输入字符串abc,则打印出由字符a, b, c所能排列出来的所有字符串a, b, c, ab, ac, bc   *,abc,求n个字符组成长度为m的组合问题   *   * @author pomay   *   */公开课Solution_stringcombination   {//求字符串中所有字符的组合abc> a, b, c, ab, ac,公元前,abc   公共静态孔隙烫(字符串)   {   List结果=new ArrayList ();//从一个开始   for (int i=1;我& lt;=s.length ();我+ +)   {   组合(年代,我,结果);   }   }//从字符串年代中选择m个字符   公共静态空间组合(字符串,整数m, List结果)   {//如果m==0,则递归结束。输出当前结果   如果(m==0)   {   for (int i=0;我& lt;result.size ();我+ +)   {   System.out.print (result.get (i));   }   System.out.print (", ");   返回;   }      如果(s.length () !=0)   {//选择当前元素   result.add (s.charAt (0) + " ");//子串用法,截取出从1开始到n结束的字符串   组合(s。substring (s.length ()), m - 1,结果);   result.remove (result.size () - 1);//不选当前元素   组合(s。substring (s.length ()), m,结果);   }   }      公共静态void main (String [] args)   {   字符串str=癮bc”;   烫(str);   }   }   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java实现字符串排列组合问题