במדריך זה, נלמד איך למצוא את התערובת של מחרוזת בתוכנית 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]
זהו כל מה שיש לנו למצוא את כל התערובות של מחרוזת ב-Java.
אתה יכול להוריד את קוד התוכנית לדוגמה מה מאגר הקוד שלנו ב-GitHub.
Source:
https://www.digitalocean.com/community/tutorials/permutation-of-string-in-java