爪哇2博客
爪哇2博客

在Java中查找字符串的所有排列

在本文中,我们将看到如何在Java中查找String的所有排列。
我们将使用一种非常简单的方法来做到这一点。

取出String的第一个字符并递归插入剩余String的排列的不同位置。

假设您有String作为 美国广播公司.
所以我们从ABC取出A
第一个字符= A,其余字符串= BC 
当我们在此处应用递归时,我们会发现BC的排列。
从BC取出B。
第一个字符= B,其余字符串= C 
在这里应用递归时,我们会发现C的排列。
当我们取出C时,我们的String大小变为0,这就是我们的基本情况。
第一个角色 = C和RemainingString =“” 
我们将C插入RemainingString(“”),因此我们将C置换为C。
我们将B插入剩余字符串(C)的不同置换索引中,因此得到BC和CB。
C:BC,CB
现在我们将A插入BC和CB中的不同索引。
卑诗省:ABC,BAC,BCA
CB:ACB,CAB,CBA
这就是我们获得ABC所有排列的方式。
它可能看起来很棘手,但是一旦您实践了解决方案,您将能够更好地理解它。

爪哇程序可在Java中找到所有String的Permutations:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.哈希集;
进口 爪哇.实用程序.迭代器;
进口 爪哇.实用程序.;
 
上市 爪哇的PermutationOfString {
 
上市 静态的 虚空 主要([] args) {
 
     =排列OfString(“ 美国广播公司”);
     系统..打印(“字符串ABC的排列是:”);
     对于 (迭代器 迭代器 = .迭代器(); 迭代器.hasNext();) {
   = () 迭代器.下一页();
   系统..打印();  
  }
}
 
上市 静态的 排列OfString( 力量)
{
  排列集= 哈希集();
 
  如果 (力量.长度()==0)
  {
   排列集.();
            返回 排列集;
  }
 
  //取出String的第一个字符
  烧焦 c=力量.字符(0);
  //剩余的字符串
   雷姆=力量.子串(1);
 
  烫发utatedSetForRemainingString=排列OfString(雷姆);
  对于 ( 烫发utedString: 烫发utatedSetForRemainingString) {
   对于 (整型 j = 0; j <= 烫发utedString.长度(); j++) {
     排列=insertFirstCharAtDiffPlaces(烫发utedString,c,j);
    排列集.(排列);
   }
 
  }
  返回 排列集;
 
}
上市 静态的 insertFirstCharAtDiffPlaces( 烫发,烧焦 firstChar,整型 指数)
{
  //根据索引将orig 串的firstCharacter插入不同位置
  返回 烫发.子串(0,指数)+firstChar+烫发.子串(指数);
}
 
}
 

当您运行上述程序时,您将得到以下结果:

1
2
3
4
5
6
7
8
9
 
排列 美国广播公司 :
ACB
美国广播公司
BCA
CBA
出租车
商业咨询委员会
 

分享这个

作者

关注作者

相关文章

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客