In Java gibt es eine Möglichkeit, den Zustand zu überprüfen:
"Erscheint dieses einzelne Zeichen überhaupt in Zeichenfolge x?"
ohne Schleife?
java
validation
string
character
Barfoon
quelle
quelle
Antworten:
Sie können verwenden
string.indexOf('a')
.Wenn das Zeichen
a
vorhanden ist instring
:quelle
indexOf()
verwendet intern Schleife. Keine der Antworten gibt die richtige Lösung und wenn jemand es wagt, eine neue Frage zu stellen, erklären die Leute sieDuplicate
. Wirklich enttäuschend; (String.contains()
Hiermit wird überprüft, ob die Zeichenfolge eine bestimmte Folge von Zeichenwerten enthältString.indexOf()
Dies gibt den Index innerhalb der Zeichenfolge des ersten Auftretens des angegebenen Zeichens oder Teilstrings zurück (es gibt 4 Variationen dieser Methode).quelle
String.contains(""+c)
Ich bin mir nicht sicher, was das Originalplakat genau verlangt. Da indexOf (...) und enthält (...) wahrscheinlich beide intern Schleifen verwenden, möchte er vielleicht sehen, ob dies überhaupt ohne Schleife möglich ist? Ich kann mir zwei Möglichkeiten vorstellen, eine wäre natürlich eine Wiederholung:
Der andere ist weit weniger elegant, aber die Vollständigkeit ...:
Die Anzahl der Zeilen wächst, da Sie natürlich immer längere Zeichenfolgen unterstützen müssen. Es gibt jedoch überhaupt keine Schleifen / Wiederholungen. Sie können die Längenprüfung sogar entfernen, wenn Sie befürchten, dass diese Länge () eine Schleife verwendet.
quelle
quelle
Sie können 2 Methoden aus der
String
Klasse verwenden.String.contains()
Hiermit wird überprüft, ob die Zeichenfolge eine bestimmte Folge von Zeichenwerten enthältString.indexOf()
Dies gibt den Index innerhalb der Zeichenfolge des ersten Auftretens des angegebenen Zeichens oder Teilstrings zurück oder gibt -1 zurück, wenn das Zeichen nicht gefunden wird (es gibt 4 Variationen dieser Methode).Methode 1:
Methode 2:
Links von: Zach Scrivena
quelle
Um zu überprüfen, ob in einer Zeichenfolge etwas nicht vorhanden ist, müssen Sie sich zumindest jedes Zeichen in einer Zeichenfolge ansehen. Selbst wenn Sie eine Schleife nicht explizit verwenden, hat sie die gleiche Effizienz. Davon abgesehen können Sie versuchen, str.contains ("" + char) zu verwenden.
quelle
Wenn Sie dieselbe Zeichenfolge häufig überprüfen müssen, können Sie die Zeichenvorkommen im Voraus berechnen. Dies ist eine Implementierung, die ein Bit-Array verwendet, das in einem langen Array enthalten ist:
quelle
Ja, mit der indexOf () -Methode für die Zeichenfolgenklasse. Weitere Informationen zu dieser Methode finden Sie in der API-Dokumentation
quelle
quelle
for
ist jetzt keine Schleife?Ausgabe
quelle
quelle
}}
quelle
Ist das unten, wonach Sie gesucht haben?
quelle
&& string.lastIndexOf(character) != index
Sie können nicht überprüfen, ob char in einer Zeichenfolge überhaupt angezeigt wird, ohne die Zeichenfolge mindestens einmal mit loop / recursion zu durchlaufen (die integrierten Methoden wie indexOf verwenden auch eine Schleife).
Wenn die Nr. Wenn Sie nachsehen, ob sich ein Zeichen in der Zeichenfolge x befindet, ist dies mehr als die Länge der Zeichenfolge, als ich die Verwendung einer Set- Datenstruktur empfehlen würde, da dies effizienter wäre als die einfache Verwendung
indexOf
Mit set können Sie überprüfen, ob das Zeichen in einer Zeichenfolge in konstanter Zeit O (1) vorhanden ist, aber Sie verwenden auch zusätzlichen Speicher (die Raumkomplexität beträgt O (n)).
quelle
Ich habe dafür die Methode string.includes () verwendet, die true oder false zurückgibt, wenn die Zeichenfolge oder das Zeichen gefunden wird. Siehe die folgende Dokumentation.
https://www.w3schools.com/jsref/jsref_includes.asp
quelle
// Dies ist nur die Hauptsache ... Sie können einen gepufferten Leser oder Scanner verwenden
quelle