Java怎么实现abc字符串排列组合

  介绍

这篇文章将为大家详细讲解有关Java怎么实现abc字符串排列组合,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1。可重复排列:abc三个字符组成的所有长度为3的字符串,aaa,艺术展,aac……ccc一共27种

利用递归的思想,第一个字符可以从abc中选择一个,三种选择,之后问题转化为abc组成长度为2的字符的情况,循环递归后可以求出所有的可能。控制好循环退出条件即可。

利用递归可以处理,不知道字符长度的情况下,即通用处理。如果知道长度,只需要利用多层循环,也可以得出结论。

public  class  Permutation  {,   ,public  static  void  main (String [], args), {,   char[],才能chs =,{& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;},,   每才能(new  char [3], chs,, 3 - 1),,   }大敌;   ,public  static  void 每(char[],但,,char [], chs,, int  len) {,   如果才能(==len  1) {,   ,,(int 我=buf.length-1;, i>=0;,——我),   ,,,System.out.print (buf[我]),,   ,,System.out.println (),,   ,,,返回;   ,,},   的才能(int  i=0, i

可重复选择,一共27种情况,结果如下图所示

癑ava怎么实现abc字符串排列组合"

2。全排列:还是abc三个字符,全排列即字符不能重复。最后3 * 2=6种结果

可以利用1中的方法,只要判断3个字符是否相等,都不相等的才是需要的全排列里的一个。这样的时间复杂度为n ^ n,而全排列的种类为n !所以需要设计一种n !的算法。

也可以利用递归,第一个字符串一共有n种选择,剩下的变成一个n - 1规模的递归问题。而第一个字符的n种选择,都是字符串里面的,因此可以使用第一个字符与其它的位置上进行交换,得到n中情况,然后递归处理n - 1的规模,只是处理完之后需要在换回来,变成原来字符的样子。

public  class  Arrange  {,   ,public  static  void  main (String [], args), {,   char[],才能chs =,{& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;},,   安排才能(chs, 0,, chs.length),,   }大敌;   ,public  static  void 安排(char [], chs,, int 开始,int  len) {,   如果才能(start ==, len-1) {,   ,,(int  i=0;, i

运行结果如下图所示,一共6种组合

癑ava怎么实现abc字符串排列组合"

3。组合:abc三个字符的所有组合

求所有组合也就是abc各个位是否选取的问题,第一位2中可能,第二位2种…所以一共有2 ^ n种。用0表示不取,1表示选取,这样可以用110这样的形式表示ab.abc一共的表示形式从0到2 ^ 3 - 1,然后按位与运算,如果结果为1就输出当前位,结果0不输出。

public  class  Comb  {,   ,public  static  void  main (String [], args), {,   char[],才能chs =,{& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;},,   梳子(chs);才能,   }大敌;   ,   ,public  static  void 梳(char [], chs), {,   int 才能;len =, chs.length;,   int 才能;nbits =, 1, & lt; & lt;, len;,   for 才能;(int 小姐:=,0;,小姐:& lt;, nbits;, + + i), {,   ,,int  t,   ,,for  (int  j =, 0;, j  & lt;, len;, j + +), {,   ,,,t =, 1, & lt; & lt;, j。,   ,,,if  ((, t  i), !=, 0),{,//与运算,同为1时才会是1,   ,,,,System.out.print (chs [j]),,   ,,,},   ,,},   ,,System.out.println (),,   ,,},   }大敌;   }

输出结果如下,第一行为空,表示一个都不取

癑ava怎么实现abc字符串排列组合"

关于“Java怎么实现abc字符串排列组合”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

Java怎么实现abc字符串排列组合