Longest Substring Without Repeating Characters
Esamina una stringa alla ricerca di sequenze di caratteri consecutivi in cui ogni carattere compare una sola volta. In coddycode, la sequenza ycode contiene cinque caratteri diversi e nessuna sequenza più lunga evita le ripetizioni, quindi la risposta è 5.
Controllare ogni possibile sequenza funziona, ma è lento. Un metodo più rapido mantiene una finestra tra due posizioni che non contiene mai ripetizioni. Sposta il bordo destro di un carattere alla volta. Quando il nuovo carattere è già nella finestra, sposta il bordo sinistro subito dopo la posizione in cui quel carattere era già stato visto. Ricordare l’ultima posizione di ogni carattere rende immediato questo spostamento, così la stringa viene letta una sola volta.
Scrivi una funzione chiamata lengthOfLongestSubstring che riceve una stringa s e restituisce la lunghezza della sottostringa più lunga (una sequenza di caratteri consecutivi) in cui nessun carattere compare più di una volta.
Le lettere maiuscole e minuscole sono caratteri diversi, quindi a e A non sono ripetizioni.
Vincoli: 1 <= s.length <= 5 * 10^4. s contiene solo lettere inglesi (minuscole e maiuscole) e cifre.
Funzione
- arg1string
- Restituisceinteger
Esempi
- Input
- arg1 = "coddycode"
- Output
- 5
- Input
- arg1 = "racecar"
- Output
- 4
- Input
- arg1 = "a1b2a3b"
- Output
- 5
+12 test nascosti all’invio
Suggerimenti
Aprili uno alla volta. Ognuno rivela un po’ di più.
Una sottostringa è una parte continua della stringa, quindi stai cercando il tratto più lungo che puoi coprire senza incontrare due volte lo stesso carattere.
Mantieni una finestra con un'estremità sinistra e una destra. Allargala a destra di un carattere alla volta e sposta l'estremità sinistra solo quando il nuovo carattere è già all'interno della finestra.
Memorizza l'ultimo indice in cui è apparso ciascun carattere. Se il nuovo carattere è stato visto l'ultima volta al margine sinistro o dopo, sposta il margine sinistro di una posizione oltre quell'indice. Il margine sinistro non si sposta mai all'indietro e la risposta è la finestra più ampia che hai mai avuto.
Presto una spiegazione completa di questo problema.
Problemi simili
Problemi che usano le stesse idee. Risolverne due o tre è ciò che fissa uno schema.
Python
def lengthOfLongestSubstring(s):
# Scrivi il codice quiCaso 1
Caso 2
Caso 3
Input
arg1 = "coddycode"
Atteso
5