Es ist ein einfaches Problem mit der Beschreibung:
Sie erhalten ein 0-indiziertes Array aus Zeichenfolgen, Wörtern und einem Zeichen x.
Gibt ein Array von Indizes zurück, die die Wörter darstellen, die das Zeichen x enthalten.
Beachten Sie, dass das zurückgegebene Array eine beliebige Reihenfolge haben kann.
Beispiel 1:
Eingabe: Wörter = ["leet", "code"], x = "e"
Ausgabe: [0,1]
Erläuterung: „e“ kommt in beiden Wörtern vor: „leet“ und „code“. Daher geben wir die Indizes 0 und 1 zurück.Beispiel 2:
Eingabe: Wörter = ["abc", "bcd", "aaaa", "cbc"], x = "a"
Ausgabe: [0,2]
Erläuterung: „a“ kommt in „abc“ und „aaaa“ vor. Daher geben wir die Indizes 0 und 2 zurück.Beispiel 3:
Eingabe: Wörter = ["abc", "bcd", "aaaa", "cbc"], x = "z"
Ausgabe: []
Erläuterung: „z“ kommt in keinem der Wörter vor. Daher geben wir ein leeres Array zurück.Einschränkungen:
1 <= Wörter.Länge <= 50
1 <= Wörter[i].Länge <= 50
x ist ein kleiner englischer Buchstabe.
Wörter[i] bestehen nur aus englischen Kleinbuchstaben.
Um dieses Problem zu lösen, müssen Sie die Wortliste iterieren. Überprüfen Sie bei jedem Wort, ob das Zeichen enthalten ist. Wenn ja, speichern Sie den Index in einer Antwortliste:
class Solution { public List<Integer> findWordsContaining(String[] words, char x) { // create response final List<Integer> indexes = new ArrayList<>(); // iterate words string array for(int i=0;i<words.length;i++){ // check if char exists into the word if(words[i].indexOf(x) != -1){ indexes.add(i); // if yes add index into the response } } // return searched indexes return indexes; } } </p> <blockquote> <p>Laufzeit: 1 ms, schneller als 100,00 % der Java-Online-Einreichungen.</p> <p>Speichernutzung: 44,95 MB, weniger als 49,76 % der Java-Online-Einreichungen.</p> </blockquote> <p>—</p> <p>Wenn Sie einen Lambda-/Funktionsansatz verfolgen möchten, der normalerweise sauberer ist, aber mehr Leistung beansprucht, würde das so aussehen:<br> </p> <pre class="brush:php;toolbar:false">class Solution { public List<Integer> findWordsContaining(String[] words, char x) { return IntStream.range(0, words.length) .boxed() // convert primitive into Class related (int -> Integer) .map(i -> getIndexIfCharExistsInWord(words[i], i, x)) .filter(Objects::nonNull) // to remove null ones from mapping .collect(Collectors.toList()); } public Integer getIndexIfCharExistsInWord(final String word, final int i, final char x) { return word.indexOf(x) != -1 ? i : null; } }
Laufzeit: 9 ms, schneller als 2,72 % der Java-Online-Einreichungen.
Speichernutzung: 44,90 MB, weniger als 66,32 % der Java-Online-Einreichungen.
—
Das ist es! Wenn es sonst noch etwas zu besprechen gibt, können Sie gerne einen Kommentar hinterlassen. Wenn ich etwas verpasst habe, lassen Sie es mich wissen, damit ich es entsprechend aktualisieren kann.
Bis zum nächsten Beitrag! :)
Das obige ist der detaillierte Inhalt vonLeetcode – Wörter finden, die Zeichen enthalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!