이 문제에서 크기가 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