[Likou] 58. Le parcours inverse de la longueur du dernier mot est-il la solution optimale ?

L'offre arrive, creusez des amis pour ramasser! Je participe à l'événement de vérification du recrutement du printemps 2022, cliquez pour voir les détails de l'événement .

Le 30e article du 22e jour de la carte perforée des recrues du printemps.

L'étude assidue est comme un semis qui pousse, il ne grandit pas, mais il grandit chaque jour ; l'abandon de l'école est comme une pierre pour aiguiser un couteau, il ne voit pas sa perte, mais il perd chaque jour.

Il y a tellement d'activités pour les Nuggets. Ce mois-ci, j'ai décidé d'utiliser des questions go to brush tous les jours.

Allons-y!

Description du sujet

Vous recevez une chaîne composée de plusieurs mots séparés par des espaces avant et après eux. Renvoie la longueur du dernier mot de la chaîne.

Un mot est la plus grande sous-chaîne composée uniquement de lettres et ne contenant aucun espace.

Exemple

Exemple 1:

Entrée : s = "Bonjour le monde"

sortie : 5

Explication : Le dernier mot est "Monde" et a une longueur de 5.

Exemple 2 :

输入:s = "emmène-moi sur la lune"

sortie : 4

Explication : Le dernier mot est "lune" et a une longueur de 4.

Exemple 3 :

Entrée : s = "luffy est toujours un joyboy"

Sortie : 6

Explication : Le dernier mot est "joyboy" de longueur 6.  

indice:

1 <= s.longueur <= 1 0 4 10^{4}

s se compose uniquement de lettres anglaises et d'espaces ' '

il y a au moins un mot dans s

analyse de sujet

  1. Après avoir lu la description du titre, la première réaction est de diviser la chaîne en tableaux basés sur des espaces
  2. Obtenir la longueur du dernier mot du tableau est la longueur dont nous avons besoin
  3. Mais la méthode ci-dessus n'est pas la solution optimale. Puisque nous voulons trouver la longueur du dernier mot, nous pouvons utiliser 反向遍历l'idée

Explication des idées

  1. Selon le sens de la question, nous pouvons savoir qu'il y a au moins un mot dans la chaîne, donc il doit y avoir des lettres dans la chaîne.
  2. Trouvez d'abord la dernière lettre de la chaîne, qui est la dernière lettre du dernier mot.
  3. Continuez à parcourir la chaîne en sens inverse, en commençant par la dernière lettre, jusqu'à ce qu'un espace soit rencontré ou que le début de la chaîne soit atteint.
  4. Chaque lettre traversée est une lettre du dernier mot, donc le nombre de lettres traversées est la longueur du dernier mot.

Code CA

func lengthOfLastWord(s string) (ans int) {
    //倒序遍历 获得最大索引位置
    index := len(s) - 1
    for s[index] == ' ' {
        index--
    }
    //倒序索引未跑完并且索引对应的值不是空字符串时
    for index >= 0 && s[index] != ' ' {
        ans++
        index--
    }
    return
}
复制代码

résultat de l'opération

image.png

Résumer

Analyse de complexité :

Complexité temporelle : O(n), où n est la longueur de la chaîne.

Complexité spatiale : O(1).

Description des sources

Source : LeetCode

Lien : leetcode-cn.com/problems/le…

Le droit d'auteur appartient à Lingkou Network. Pour les réimpressions commerciales, veuillez contacter l'autorisation officielle, et pour les réimpressions non commerciales, veuillez indiquer la source.

finalement

Merci d'avoir lu, et bienvenue à tous : j'aime, favori,pièce de monnaie(se concentrer sur)! ! !

8e95dac1fd0b2b1ff51c08757667c47a.gif

Je suppose que tu aimes

Origine juejin.im/post/7079210376222474271
conseillé
Classement