在java中查找字符串的所有排列
在这篇文章中,我们将看到如何在 java 中找到 String 的所有排列。 我们将使用一种非常简单的方法来做到这一点。 取出String的第一个字符,递归地插入剩余String的排列的不同位置。
假设您将 String 作为ABC。 所以我们从 ABC 中取出 A 第一个字符 =A 和 RemainingString = BC 因为我们在这里应用递归,我们将找到 BC 的排列。 从 BC 中取出 B。 第一个字符= B 和 RemainingString = C 因为我们在这里应用递归,我们会找到 C 的排列。 当我们取出 C 时,我们的字符串大小变为 0,这就是我们这里的基本情况。 第一个字符 = C 和 RemainingString = “” 我们将 C 插入到 RemainingString(“”) 的排列的不同索引中,所以我们得到 C 的排列为 C。 我们将 B 插入到剩余字符串(C)的排列的不同索引中,所以我们得到BC 和 CB。 C: BC, CB 现在我们将 A 插入到 BC 和 CB 的不同索引中。 BC : ABC , BAC , BCA CB : ACB, CAB, CBA 所以这就是我们如何得到 ABC 的所有排列。 这可能看起来很棘手,但是一旦您练习了该解决方案,您将能够更好地理解它。
在java中查找所有字符串排列的Java程序:
package org.arpit.java2blog; 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