Oggi vediamo il seguente esercizio di LeetCode:

Given a string s consisting of words and spaces, return the length of the last word in the string. A word is a maximal substring consisting of non-space characters only.

Possiamo risolvere questo problema analizzando la stringa e individuando l’ultima parola valida, come nel codice proposto.

L’idea chiave è:

  • dividiamo la stringa utilizzando lo spazio come separatore
  • otteniamo così un array di possibili parole (inclusi eventuali elementi vuoti)
  • scorriamo l’array a ritroso, partendo dall’ultima posizione
  • ignoriamo le stringhe vuote causate da spazi multipli o finali
  • appena troviamo una parola valida, ne restituiamo la lunghezza
  • se non troviamo parole, restituiamo un valore di fallback

Questo approccio permette di ottenere una complessità O(n), dove n è la lunghezza della stringa, ed è semplice da implementare. Tuttavia, crea una struttura ausiliaria (l’array) che può essere evitata scorrendo direttamente la stringa da destra verso sinistra.

function lengthOfLastWord(s: string): number {
    let strings: string[] = s.split(" ");
    console.log(strings);
    for(let i = strings.length - 1; i >= 0; i--){
        if(!(strings[i].length == 0)){
            console.log(strings[i]);
            return strings[i].length;
        }
    }
    return -1;
};

Se hai dubbi in merito non esitare a contattarci sui nostri social, saremo più che felici di risponderti :)