Das ist falsch, aus jedem Element müssen nur vier neue Elemente gemacht werden; die Klammerung um "b" existiert ja schon.
Ja, das ist natürlich richtig, danke für die Verbesserung. Falls die Erläuterung von
@fhoffmann noch nicht ausreichend war:
Wir haben zwei Schritte: ersten Buchstaben mit und ohne Klammern
und dann die entstandendenen Ergebnisse mit und ohne Klammern.
==> Zwei Verdoppelungen, d.h. 4 Elemente.
Jetzt sollten wir aber diese gefundene (vermeintliche) Lösung noch etwas verifizieren. Wir haben die Idee von
@fhoffmann aus #6 umgesetzt, aber die Idee wurde bisher noch nicht verifiziert. Das hätte man schon an seinem Beispiel machen können/sollen aber das wurde irgendwie versäumt.
Er hat das Beispiel xab gebracht und da gibt es nur die Ergebnisse von ab für die jeweils die Elemente:
xt
(x)t
(xt)
((x)t)
für alle t Element aus der Menge aller Lösungen aus dem Aufruf aus "ab".
Was dabei auffallen sollte ist nun, dass z.B. "(xa)b" eine gültige Klammerung ist, aber diese in der Lösungsmenge nicht auftaucht.
Somit ist die bisherige Lösung noch nicht korrekt und somit zu erweitern. Wenn ich also 3 Zeichen habe, muss ich nicht nur das erste Zeichen mal abtrennen sondern auch mal 2 Zeichen. Bei n Zeichen habe ich dann einfach eine Schleife, die dann alles in alle möglichen zwei Teile trennen könnte.
Und dann ist da noch das wichtige Thema:
Wichtig aber ist, dass kein Element in der Ergebnisliste mehrmals vorkommt
Ohne Grund wird da ja das HashSet nicht explizit erwähnt worden sein
In meiner letzten Firma mussten Bewerber eine Aufgabe dieses Schwierigkeitsgrades innerhalb eines Vorstellungsgesprächs lösen.
Aber das ist keine Aufgabe für einen Junior würde ich sagen. Das ist eine Aufgabe, die bei den Codility-Tests, auf die wir z.B. zugreifen, als schwere Aufgabe geführt werden dürfte.