Maison > Java > javaDidacticiel > Leetcode — Rechercher des mots contenant un caractère

Leetcode — Rechercher des mots contenant un caractère

Patricia Arquette
Libérer: 2025-01-08 06:26:41
original
1017 Les gens l'ont consulté

Leetcode — Find Words Containing Character

C'est un problème simple avec une description :

Vous recevez un tableau de chaînes de mots indexé 0 et un caractère x.

Renvoie un tableau d'indices représentant les mots qui contiennent le caractère x.

Notez que le tableau renvoyé peut être dans n'importe quel ordre.

Exemple 1 :

Saisie : mots = ["leet","code"], x = "e"
Sortie : [0,1]
Explication : « e » apparaît dans les deux mots : « leet » et « code ». Par conséquent, nous renvoyons les indices 0 et 1.

Exemple 2 :

Saisie : mots = ["abc","bcd","aaaa","cbc"], x = "a"
Sortie : [0,2]
Explication : "a" apparaît dans "abc" et "aaaa". Par conséquent, nous renvoyons les indices 0 et 2.

Exemple 3 :

Saisie : mots = ["abc","bcd","aaaa","cbc"], x = "z"
Sortie : []
Explication : « z » n'apparaît dans aucun des mots. Par conséquent, nous renvoyons un tableau vide.

Contraintes :

1 <= mots.longueur <= 50

1 <= mots[i].length <= 50

x est une lettre anglaise minuscule.

les mots[i] se composent uniquement de lettres anglaises minuscules.

Pour résoudre ce problème, vous devrez parcourir la liste de mots, sur chaque mot, vérifiez s'il contient le caractère, si c'est le cas, vous stockez son index dans une liste de réponses :

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>Durée d'exécution : 1 ms, plus rapide que 100,00 % des soumissions en ligne Java.</p>

<p>Utilisation de la mémoire : 44,95 Mo, soit moins de 49,76 % des soumissions en ligne Java.</p>
</blockquote>

<p>—</p>

<p>Si vous souhaitez adopter une approche lambda/fonction, qui est généralement plus propre mais pèse davantage sur les performances, cela ressemblerait à ceci :<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;
    }
}
Copier après la connexion

Durée d'exécution : 9 ms, plus rapide que 2,72 % des soumissions en ligne Java.

Utilisation de la mémoire : 44,90 Mo, soit moins de 66,32 % des soumissions en ligne Java.

C'est ça ! S'il y a autre chose à discuter, n'hésitez pas à laisser un commentaire, si j'ai raté quelque chose, faites-le-moi savoir afin que je puisse mettre à jour en conséquence.

À la prochaine publication ! :)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal