Aufzählung aller Kombinationen Java

Als ich das Problem löste, dass ich alle Zeichenkombinationen aus der angegebenen Zeichenfolge erhalten wollte, habe ich nachgeschlagen und festgestellt, dass Chakotays Blog = 612) hatte was ich gesucht habe !!!

	public static void permutation(String q, String ans){
		// Base Case
		if(q.length() <= 1) {
			System.out.println(ans + q);
		}
		// General Case
		else {
			for (int i = 0; i < q.length(); i++) {
				permutation(q.substring(0, i) + q.substring(i + 1),
						ans + q.charAt(i));
			}
		}
	}

Ich war beeindruckt von dem sehr prägnanten Code, obwohl ich verschiedene Dinge einschließlich Englisch gesucht habe !!! Aber ich weiß nicht, was los ist. .. .. Daher möchte ich die Rekursion Schritt für Schritt betrachten. Schauen wir uns als Beispiel das Verhalten der Permutation ("abc", "") "in der richtigen Reihenfolge an.

permutation("abc","")
//q.length=3 Also geh zu sonst
//i=Wenn 0(Dies ist weniger als 3)
	permutation("bc","a")
	//q.length=2 Also geh zu sonst
	//i=Wenn 0(Dies ist weniger als 2)
		permutation("c","ab")
		//q.length=Ich gehe also zu if
		System.out.println("abc");
	//i=Wenn 1(Dies ist weniger als 2)
		permutation("b","ac")
		//q.length=Ich gehe also zu if
		System.out.println("acb");
	//permutation("bc","a") done	
//i=Wenn 1(Dies ist weniger als 3)
	permutation("ac","b")
	//q.length=2 Also geh zu sonst
	//i=Wenn 0(Dies ist weniger als 2)
		permutation("c","ba")
		//q.length=Ich gehe also zu if
		System.out.println("bac");
	//i=Wenn 1(Dies ist weniger als 2)
		permutation("a","bc")
		//q.length=Ich gehe also zu if
		System.out.println("bca");
	//permutation("ac","b") done	
//i=Wenn 2(Dies ist weniger als 3)
	permutation("ab","c")
	//q.length=2 Also geh zu sonst
	//i=Wenn 0(Dies ist weniger als 2)
		permutation("b","ca")
		//q.length=Ich gehe also zu if
		System.out.println("cab");
	//i=Wenn 1(Dies ist weniger als 2)
		permutation("a","cb")
		//q.length=Ich gehe also zu if
		System.out.println("cba");
	//permutation("ab","c") done	
//permutation("abc","") done

Es ist so. Ist es schwer zu verstehen? Ich schrieb es auf und verstand es, aber ich bewunderte oft, dass ich mir eine solche Methode nicht alleine ausdenken konnte.

das ist alles. Es war mein erster Beitrag.

Recommended Posts

Aufzählung aller Kombinationen Java
[Java] Aufzählungstyp
[Java] Übersicht über Java
Abgelaufene Java-Sammlung
[Java] Bedeutung der serialVersionUID
NIO.2 Überprüfung von Java
Bewertung von Java Shilber
Java - Vereinigung von Kommentaren
Geschichte der Java-Annotationen
Java (Verdienste des Polymorphismus)
[Java-Zweig] Kombinationen auflisten
NIO Bewertung von Java
[Java] Drei Funktionen von Java
Zusammenfassung der Java-Unterstützung 2018
Über Java-Instanzen
[Java] Mirage-Basic-Verwendung von SQL
[Java] Anfängerverständnis von Servlet-②
[Java] Praxis der Ausnahmebehandlung [Ausnahme]
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Grundlagen der Zeichenoperation (Java)
[Java] Erstellen von Originalanmerkungen
Java-Lerntag 4
Java Ende des Monats plusMonate
[Java] Zusammenfassung der regulären Ausdrücke
[Java] Zusammenfassung der Operatoren (Operator)
[Java] Implementierung des Faistel-Netzwerks
[Java] Komparator der Collection-Klasse
Implementieren Sie eine Kombination aus Mathematik in Java
Zusammenfassung der Grundlagen der Java-Sprache
Zusammenfassung der Java Math Klasse
Java (Vererbung von is-ein Prinzip)
Vor- und Nachteile von Java
Vorteile der statischen Java-Methode
[Java] Zusammenfassung der Steuerungssyntax
Java-Implementierung von Tri-Tree
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der Entwurfsmuster
[Java] Zusammenfassung der mathematischen Operationen
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
Denken Sie an eine Java-Update-Strategie
[Java] Löschen Sie die Elemente von List
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Verschiedene Methoden der Java String Klasse
Über Biocontainer fastqc und Java
Zusammenfassung des Pakets [Java Silver Study]
Über Lambda, Stream, LocalDate von Java8
Die Geschichte von Java Gold SE8
Liste der Java-Objekte sortieren
[Java] Ausgabe von DateTimeFormatter durch FormatStyle
[Java] Geben Sie in stdin of Process ein
Grundlegende Verwendung von Java Optionaler Teil 1
Umgang mit Zeitzonen mit Java
[Java EE] @ Abhängiges häufiges Missverständnis
Liste der in Java 9 hinzugefügten Mitglieder
[Java] Reflash-Werte für alle Elemente in BeanClass
Berücksichtigung des Risikos "Änderung der Java-Richtlinie"
Top 7 Torrent-Sites aller Zeiten