Heim > Java > javaLernprogramm > Leetcode – Wörter finden, die Zeichen enthalten

Leetcode – Wörter finden, die Zeichen enthalten

Patricia Arquette
Freigeben: 2025-01-08 06:26:41
Original
979 Leute haben es durchsucht

Leetcode — Find Words Containing Character

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;
    }
}
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage