使用 ArrayList 在 Java 中列印字串的所有排列


在這個問題中,我們給定一個大小為 n 的字串,我們必須打印出字串的所有排列。但這次我們必須使用 ArrayList 來列印此排列。

我們舉一個例子來理解這個問題 -

輸入 − string = ‘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

更新於: 14-Jul-2020

652 次瀏覽

開啟你的 職業生涯

完成該課程以獲得認證

開始
廣告