2016-09-04 8 views
0

Ich versuche, einen Code zu schreiben, der eine Zeichenfolge mit einem Sonderzeichen "," enthält. Es kann entweder ein Vorkommen oder mehrere Vorkommen haben.wie mehrere Vorkommen von einzelnen Sonderzeichen durch verschiedene Zeichen ersetzen

Jetzt möchte ich jedes Sonderzeichen durch Zeichen [a-z] ersetzen. Jedes einzelne Sonderzeichen sollte durch jedes Zeichen mit den Zeichen [a-z] ersetzt werden.

Nachdem jedes Mal die Sonderzeichen ersetzt werden, überprüfe ich die Zeichenfolge für eine Eigenschaft, wenn sie diese Eigenschaft erfüllt, sollte das Programm beendet werden und die Zeichenfolge wird zurückgegeben.

Zum Beispiel nimmt Eingang als: hello,,how

ich mit a,c ..... a,z bis z,a......z,z erste "," mit 'a' und zweiten "," mit 'a' zuerst und dann mit a,b dann ersetzt werden soll. (Wenn in diesem Prozess eine Zeichenkette meine geforderte Eigenschaft erfüllt, wird diese Zeichenkette zurückgegeben)

Das obige Beispiel Hallo, wie würde diese Zeichenketten erzeugen - hellowaahow, hellowabhow, hellowachow. ..... hallozahow, hellowbzhow, hallozchow ...... hallozzhow. Wenn eine Zeichenfolge in diesem Prozess eine Eigenschaft erfüllt, wird die Zeichenfolge zurückgegeben und das Programm wird

Ich habe nicht einmal eine Idee, wie dieses Problem anzugehen, kann mir jemand mit einer effizienten Technik helfen?

+0

Sind Ihnen einige Einschränkungen bekannt, wie maximale Stringlänge, maximales Auftreten des Sonderzeichens ','? –

+0

Das meiste, was Sie brauchen, ist im [Javadoc für String] (http://docs.oracle.com/javase/8/docs/api/java/lang/String.html). Das und eine verschachtelte Schleife oder zwei ist alles was man braucht. (Ja, dies kann leicht mit Streams gemacht werden, aber das ist ein bisschen fortgeschritten für diese.) –

+0

Sie können Länge der Zeichenfolge unter 25.000 immer einschließlich maximale Vorkommen von Sonderzeichen (es kann eine beliebige Anzahl von Vorkommen unter 25.000 haben), dh kann sogar eine Zeichenkette wie ,,,,,,,,, und ich würde alle Sonderzeichen mit jedem Zeichen wie ich in dem Problem erwähnt ersetzen. – Revanth

Antwort

0

mir helfen, eine effiziente Technik aus

Sie brauchen, um zu verfolgen, was ist der nächste Ersatz-String:

String nextReplacement = "a"; 

Auch Titel des nächsten Briefes halten:

char nextLetter = 'b'; 

Gehen Sie die Zeichenfolge Zeichen für Zeichen durch. Wenn Sie ein Komma sehen, fügen Sie nextReplacement ein, fügen Sie ","+nextLetter an nextReplacement an, und erhöhen Sie nextLetter, wenn Sie z noch nicht erreicht haben.

Wenn Sie ein Nicht-Komma-Zeichen sehen, fügen Sie es ohne Änderung in die Ausgabe ein.

+0

Danke, ich probiere es sofort, btw das "," + nextLetter hätte immer noch "," drin ist es nicht? Ich möchte das ersetzen "," aber das Hinzufügen würde nur das Zeichen zum Komma hinzufügen, nicht wahr? Entschuldigung, wenn ich falsch liege, bin ich ein wenig zu programmieren – Revanth

+0

Ein wichtiger Teil davon, der nicht erwähnt wird, ist, dass Sie ['StringBuilder'] verwenden sollten (https://docs.oracle.com/javase/ 8/docs/api/java/lang/StringBuilder.html), um das Ergebnis zu erstellen. Wenn also die Antwort "insert" lautet, bedeutet dies, die Methode 'append()' aufzurufen. – Andreas

+0

@Revanth Die Eingabeseite sollte von der Ausgabeseite getrennt sein, daher sollte Ihr Code, der die Eingabe liest, dieses zusätzliche Komma nicht sehen. – dasblinkenlight

Verwandte Themen