小编典典

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

javascript

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


阅读 376

收藏
2021-06-15

共1个答案

小编典典

在这篇文章中,我们将看到如何在 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
2021-06-15