[Likou] 58. A travessia inversa do comprimento da última palavra é a solução ótima?

Oferta chega, cavar amigos para pegar! Estou participando do Evento Check-In de Recrutamento da Primavera de 2022, clique para ver os detalhes do evento .

O 30º artigo no 22º dia do cartão perfurado do recruta da primavera.

O estudo diligente é como uma muda que brota, não cresce, mas cresce a cada dia; abandonar a escola é como uma pedra para afiar uma faca, não vê sua perda, mas perde todos os dias.

Há tantas atividades para os Nuggets, este mês, decidi usar as perguntas de ir ao pincel todos os dias.

Vamos lá!

Descrição do tópico

Você recebe uma string s que consiste em várias palavras separadas por alguns caracteres de espaço antes e depois delas. Retorna o comprimento da última palavra na string.

Uma palavra é a maior substring que consiste apenas em letras e não contém nenhum caractere de espaço.

Exemplo

Exemplo 1:

Entrada: s = "Olá Mundo"

saída: 5

Explicação: A última palavra é "Mundo" e tem um comprimento de 5.

Exemplo 2:

输入:s = "voe para a lua"

saída: 4

Explicação: A última palavra é "lua" e tem comprimento de 4.

Exemplo 3:

Entrada: s = "luffy ainda é joyboy"

Saída: 6

Explicação: A última palavra é "joyboy" de comprimento 6.  

dica:

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

s consiste apenas em letras e espaços em inglês ' '

há pelo menos uma palavra em s

análise de tópicos

  1. Depois de ler a descrição do título, a primeira reação é dividir a string em arrays com base em espaços
  2. Obter o comprimento da última palavra na matriz é o comprimento que precisamos
  3. Mas o método acima não é a solução ideal. Como queremos encontrar o comprimento da última palavra, podemos usar 反向遍历a ideia

Explicação de ideias

  1. De acordo com o significado da pergunta, podemos saber que há pelo menos uma palavra na string, portanto, deve haver letras na string.
  2. Primeiro encontre a última letra na string, que é a última letra da última palavra.
  3. Continue percorrendo a string em sentido inverso, começando na última letra, até que um espaço seja encontrado ou o início da string seja alcançado.
  4. Cada letra percorrida é uma letra na última palavra, então o número de letras percorridas é o comprimento da última palavra.

código AC

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

resultado da operação

imagem.png

Resumir

Análise de Complexidade:

Complexidade de tempo: O(n), onde n é o comprimento da string.

Complexidade do espaço: O(1).

Descrição da fonte

Fonte: LeetCode

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

Os direitos autorais pertencem à Rede Lingkou. Para reimpressões comerciais, entre em contato com a autorização oficial e, para reimpressões não comerciais, indique a fonte.

finalmente

Obrigado por ler, e bem-vindos a todos: like, favorito,moeda(focar em)! ! !

8e95dac1fd0b2b1ff51c08757667c47a.gif

Acho que você gosta

Origin juejin.im/post/7079210376222474271
Recomendado
Clasificación