[Solução de algoritmo] LeetCode 58. O comprimento da última palavra

tópico

Dada uma string s contendo apenas letras maiúsculas e minúsculas e espaços '', retorna o comprimento de sua última palavra. Se a string rolar da esquerda para a direita, a última palavra é a última palavra que aparece.

Se não houver última palavra, retorne 0.

Nota: Uma palavra se refere à maior substring que consiste apenas em letras e não contém nenhum caractere de espaço.

responda

Esta questão considera como encontrar a última string consecutiva que não contém caracteres nulos. Como você encontra essa palavra? Na verdade, só precisamos encontrar o início e o fim da string a ser encontrada. Uma vez que é para encontrar em uma string, é inevitável atravessar. Em primeiro lugar, considere percorrer desde o início. Descobrimos que não é fácil determinar o início da última palavra. Ao percorrer para uma palavra, se você não conhece os caracteres por trás dela, não tem certeza se é o último. Em seguida, considere percorrer de trás para a frente e descubra que é mais fácil determinar a última palavra. O primeiro caractere não vazio encontrado ao percorrer de trás para a frente é o final da última palavra. Continue a percorrer e encontrar o início da palavra quando ela encontrar o primeiro caractere nulo.
Além disso, considere o caso em que o comprimento da string é 0 e o caso em que não há palavra em toda a string.

Código

class Solution {
    public int lengthOfLastWord(String s) {
        if(s.length() == 0) {
            return 0;
        }
        int end = s.length() - 1;
        while(end >= 0 && s.charAt(end) == ' ') {
            end--;
        }
        int start = end;
        while(start >= 0 && s.charAt(start) != ' ') {
            start--;
        }
        return end - start;
    }
}

Acho que você gosta

Origin blog.csdn.net/vxzhg/article/details/106919152
Recomendado
Clasificación