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;
}
}