在Java中查找字符串的所有排列
我们将使用一种非常简单的方法来做到这一点。
取出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 出租车 商业咨询委员会 |