इस समस्या में, हमें आकार n का एक स्ट्रिंग दिया गया है और हमें स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करने हैं। लेकिन इस बार हमें ArrayList का उपयोग करके इस क्रमपरिवर्तन को प्रिंट करना है।
आइए एक उदाहरण से समझते हैं -
इनपुट: string = 'XYZ'
आउटपुट: XYZ, XZY, YXZ, YZX, ZXY, ZYX
इस समस्या को हल करने के लिए, हम स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तन उत्पन्न करेंगे। हम एक पुनरावर्ती (recursive) फ़ंक्शन का उपयोग करेंगे और ArrayList वापस करेंगे।
उदाहरण
निम्नलिखित एल्गोरिदम का ArrayList कार्यान्वयन है:
import java.util.ArrayList;
public class Main {
static void printArrayList(ArrayList combo) {
combo.remove("");
for (int i = 0; i < combo.size(); i++)
System.out.print(combo.get(i) + "\t");
}
public static ArrayList generatePermutation(String str) {
if (str.length() == 0) {
ArrayList empty = new ArrayList<>();
empty.add("");
return empty;
}
char ch = str.charAt(0);
String subStr = str.substring(1);
ArrayList lastCombination = generatePermutation(subStr);
ArrayList 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