كيفية العثور على جميع الترتيبات الممكنة لسلسلة في Java

في هذا البرنامج التعليمي، سنتعلم كيفية العثور على التكرار لسلسلة في برنامج Java. إنه سؤال صعب ويُطلب في مقابلات العمل بشكل أساسي في لغة Java.

خوارزمية لتكرار سلسلة في جافا

سنقوم أولاً بأخذ الحرف الأول من السلسلة وتكراره مع الأحرف المتبقية. إذا كانت السلسلة هي “ABC”، الحرف الأول = A وتكرار الأحرف المتبقية هي BC و CB. الآن يمكننا إدراج الحرف الأول في المواقع المتاحة في التكرارات. BC -> ABC، BAC، BCA CB -> ACB، CAB، CBA يمكننا كتابة وظيفة تكرارية لإرجاع التكرارات ثم وظيفة أخرى لإدراج الأحرف الأولى للحصول على قائمة كاملة من التكرارات.

برنامج Java لطباعة التكرارات لسلسلة

package com.journaldev.java.string;

import java.util.HashSet;
import java.util.Set;

/**
 * Java Program to find all permutations of a String
 * @author Pankaj
 *
 */
public class StringFindAllPermutations {
    public static Set permutationFinder(String str) {
        Set perm = new HashSet();
        // التعامل مع حالات الأخطاء
        if (str == null) {
            return null;
        } else if (str.length() == 0) {
            perm.add("");
            return perm;
        }
        char initial = str.charAt(0); // first character
        String rem = str.substring(1); // Full string without first character
        Set words = permutationFinder(rem);
        for (String strNew : words) {
            for (int i = 0;i<=strNew.length();i++){
                perm.add(charInsert(strNew, initial, i));
            }
        }
        return perm;
    }

    public static String charInsert(String str, char c, int j) {
        String begin = str.substring(0, j);
        String end = str.substring(j);
        return begin + c + end;
    }

    public static void main(String[] args) {
        String s = "AAC";
        String s1 = "ABC";
        String s2 = "ABCD";
        System.out.println("\nPermutations for " + s + " are: \n" + permutationFinder(s));
        System.out.println("\nPermutations for " + s1 + " are: \n" + permutationFinder(s1));
        System.out.println("\nPermutations for " + s2 + " are: \n" + permutationFinder(s2));
    }
}

I have used Set to store the string permutations. So that duplicates are removed automatically.

الناتج

Permutations for AAC are: 
[AAC, ACA, CAA]

Permutations for ABC are: 
[ACB, ABC, BCA, CBA, CAB, BAC]

Permutations for ABCD are: 
[DABC, CADB, BCAD, DBAC, BACD, ABCD, ABDC, DCBA, ADBC, ADCB, CBDA, CBAD, DACB, ACBD, CDBA, CDAB, DCAB, ACDB, DBCA, BDAC, CABD, BADC, BCDA, BDCA]

هذا كل شيء بالنسبة للعثور على جميع التكرارات لسلسلة في جافا.

يمكنك تحميل كود البرنامج المثال من مستودعنا على موقع GitHub.

Source:
https://www.digitalocean.com/community/tutorials/permutation-of-string-in-java