JS Likou classic 100 preguntas: la subcadena más larga sin caracteres repetidos

Dada una cadena s, busque la longitud de la subcadena más larga que no contenga caracteres repetidos.

Ejemplo 1:

Entrada: s = "abcabcbb"
Salida: 3
Explicación: Dado que la subcadena más larga sin caracteres repetidos es "abc", su longitud es 3.

Ejemplo 2:

Entrada: s = "bbbbb"
Salida: 1
Explicación: Dado que la subcadena más larga sin caracteres repetidos es "b", su longitud es 1.

Ejemplo 3:

Entrada: s = "pwwkew"
Salida: 3
Explicación: Dado que la subcadena más larga sin caracteres repetidos es "wke", su longitud es 3.
     Tenga en cuenta que su respuesta debe ser la longitud de la subcadena, "pwke" es una subsecuencia, no una subcadena.

pista:

    0 <= s.length <= 5 * 104
    s consta de letras, números, símbolos y espacios en inglés

 Pfft... Confiando en la programación de casos de prueba, finalmente lo entendí

 Idea: el mapa almacena diferentes subcadenas y elimina los elementos del mapa en i e index cuando encuentra duplicados. Use una matriz para almacenar la longitud de cada subcadena y finalmente devuelva el elemento con el valor de árbol más grande en la matriz.

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let i =0
    let arr=[]
    const map = new Map()
    map.set(s[0],0)
    if(s.length == 0){
        return 0
    }
    if(s.length ==1){
        return 1
    }
    let j=1
    while((i<s.length) && (j<s.length)){
        if(!map.has(s[j])){
            map.set(s[j],j)
            j++
        } else {
            let index = map.get(s[j])
            arr.push(j-i)
            for(let k=i; k<=index; k++){
                map.delete(s[k])
            }
            i = index+1
            map.set(s[j],j)
            j++
        }
    }
    arr.push(j-i)
    let max=0
    for(let m=0; m <arr.length; m++) {
        if(arr[m] >max){
            max = arr[m]
        }
    }
    return max
};

Supongo que te gusta

Origin blog.csdn.net/qq_36384657/article/details/128172147
Recomendado
Clasificación