English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المثال، سنتعلم حساب جميع الترتيبات المحتملة للنص في Java.
لفهم هذا المثال، يجب أن تكون على علم بما يليبرمجة Javaالموضوع:
ترتيب النص هو جميع النصوص المحتملة التي يمكن تشكيلها بتبادل مواضع حروف النص. على سبيل المثال، النص ABC الترتيبات المتاحة [ABC،ACB،BAC،BCA،CAB،CBA]。
import java.util.HashSet; import java.util.Scanner; import java.util.Set; class Main { public static Set<String> getPermutation(String str) { //إنشاء مجموعة set لتجنب التكرار في الترتيبات Set<String> permutations = new HashSet<String>(); //تحقق من أن النص فارغ if (str == null) { return null; } else if (str.طول() == 0) { //شرط التوقف التكراري الترتيبات.إضافة( return permutations; } //الحصول على الحرف الأول char first = str.القراءة(0); //الحصول على النص الفرعي المتبقي String sub = str.القطع(1); //دعوة مكررة لـ getPermutation() Set<String> words = getPermutation(sub); //استعراض words لـ (String strNew : words) { لـ (int i = 0؛i <= strNew.طول();i++) { //إدراج الترتيب في مجموعة set الترتيبات.إضافة(strNew.القطع(0، i) + first + strNew.القطع(i)); } } return permutations; } public static void main(String[] args) { // إنشاء عنصر scanner Scanner input = new Scanner(System.in); // استقبال المدخلات من المستخدم System.out.print("النص المدخل: "); String data = input.nextLine(); System.out.println(data + " " + getPermutation(data)); } }
نتيجة الخروج
النص المدخل: ABC ترتيبات ABC هي: [ACB, BCA, ABC, CBA, BAC, CAB]
في Java، نستخدم الاستدعاء الذاتي ل حساب جميع ترتيبات النصوص. هنا، سنقوم بتخزين الترتيبات في مجموعة. لذلك، لن يكون هناك ترتيبات مكررة.