查找java中的字符串的所有排列
时间:2020-02-23 14:34:09 来源:igfitidea点击:
在本教程中,我们将看到如何在Java中找到字符串的所有排列。
我们将使用一个非常简单的方法来完成它。
Take out first character of String and insert into different places of permutations of remaining String recursively.
让我们说你是ABC的字符串。
因此,我们从ABC第一个角色= A和RemainingString = BC,我们在这里申请递归,我们会发现BC的排列。
从BC取出B.第一个字符= B和RemainingString = C当我们在此处应用递归时,我们会发现C的排列。
当我们取出C时,我们的字符串大小将变为0,这是我们的基本情况。
第一个字符= c和remainingstring =""""我们将c插入剩余字符串排列的差异索引(""),因此我们将C的排列作为C.我们将B插入到剩余的汇流(c)的不同索引中,所以我们得到BC和CB。
C:BC,CB现在我们在BC和CB中插入到不同的索引。
BC:ABC,BAC,BCA CB:ACB,CAB,CBA,所以我们如何获得ABC的所有排列。
它可能看起来很棘手,但一旦你练习解决方案,你就可以更好地理解它。
java程序查找java中的所有字符串排列:
package org.igi.theitroad; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class PermutationOfStringJava { public static void main(String[] args) { Set set=permutationOfString("ABC"); System.out.println("Permutations of String ABC are:"); for (Iterator iterator = set.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); System.out.println(string); } } public static Set permutationOfString(String str) { Set permutationSet=new HashSet(); if(str.length()==0) { permutationSet.add(""); return permutationSet; } //take out first character of String char c=str.charAt(0); //Remaining String String rem=str.substring(1); Set permutatedSetForRemainingString=permutationOfString(rem); for (String permutedString: permutatedSetForRemainingString) { for (int j = 0; j <= permutedString.length(); j++) { String permutation=insertFirstCharAtDiffPlaces(permutedString,c,j); permutationSet.add(permutation); } } return permutationSet; } public static String insertFirstCharAtDiffPlaces(String perm,char firstChar,int index) { //Inserting firstCharacter of orig String at difference places based on index return perm.substring(0,index)+firstChar+perm.substring(index); } }
运行上述程序时,我们将完成以下操作:
Permutations of String ABC are: ACB ABC BCA CBA CAB BAC