Non sarà possibile trovare una soluzione che sia una complessità più piccola di O (n) perché è necessario passare attraverso ogni carattere nel caso peggiore con una stringa di input che abbia al massimo 0 o 1 spazio bianco consecutivo, o è completamente bianco.
È tuttavia possibile eseguire alcune ottimizzazioni, ma verrà comunque considerato O (n).
Ad esempio:
Sia M l'attuale corrispondenza più lunga misura in cui si passa attraverso la vostra lista. Supponiamo anche di poter accedere agli elementi di input in O (1), ad esempio se hai un array come input.
Quando si vede uno spazio non vuoto, è possibile saltare gli elementi M se lo current + M
non è uno spazio bianco. Sicuramente non è possibile contenere all'interno spazi vuoti più lunghi di M.
E quando si vede un carattere bianco, se lo current + M-1
non è uno spazio vuoto si sa che non si hanno le esecuzioni più lunghe o si può saltare anche in quel caso.
fonte
2010-04-11 12:11:10
(-1) Questo è sbagliato: non è necessario esaminare ciascun carattere. –
Se la stringa contiene solo caratteri vuoti, per favore dimmi come non esaminerai ogni personaggio. –
Con "almeno" intendevi "al massimo", immagino :) – Thomas