Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 ArrayList를 사용하여 문자열의 모든 순열 인쇄


이 문제에서 크기가 n인 문자열이 주어지고 문자열의 모든 순열을 인쇄해야 합니다. 하지만 이번에는 ArrayList를 사용하여 이 순열을 인쇄해야 합니다.

문제를 이해하기 위해 예를 들어 보겠습니다. -

입력 - 문자열 ='XYZ'

출력 - XYZ, XZY, YXZ, YZX, ZXY, ZYX

이 문제를 해결하기 위해 문자열 문자의 모든 순열을 생성합니다. 재귀 함수를 사용하고 arrayList를 반환합니다.

예시

다음은 알고리즘의 ArrayList 구현입니다. -

import java.util.ArrayList;
public class Main{
   static void printArrayList(ArrayList<String> combo) {
      combo.remove("");
      for (int i = 0; i < combo.size(); i++)
      System.out.print(combo.get(i)+"\t");
   }
   public static ArrayList<String> generatePermutation(String str) {
      if (str.length() == 0) {
         ArrayList<String> empty = new ArrayList<>();
         empty.add("");
         return empty;
      }
      char ch = str.charAt(0);
      String subStr = str.substring(1);
      ArrayList<String> lastCombination = generatePermutation(subStr);
      ArrayList<String> newCombination = new ArrayList<>();
      for (String val : lastCombination) {
      for (int i = 0; i <= val.length(); i++) {
            newCombination.add(val.substring(0, i) + ch + val.substring(i));
         }
       }
      return newCombination;
    }
   public static void main(String[] args) {
      String str = "NOPQ";
      System.out.println("Permutations of string are :");
      printArrayList(generatePermutation(str));
   }
}

출력

Permutations of string are :
NOPQ ONPQ OPNQ OPQN NPOQ PNOQ
PONQ POQN NPQO PNQO PQNO
PQON NOQP ONQP OQNP OQPN
NQOP QNOP QONP QOPN NQPO
QNPO QPNO QPON