Sin cadena de caracteres repetidos de la sub Leetcode más larga

título Descripción

Dada una cadena, se entera de que no contiene un sub-longitud de la cadena más larga de caracteres repetidos.

pensamiento

+ El doble puntero de hash: hash definir una posición del carácter parece mantener la definición comenzar indica la subcadena que empieza, cuente para representar la longitud de la subcadena

Recorrer la cadena, si el personaje ha aparecido, a continuación, comenzar a ajustar la posición máxima (posición 1 comienza, el último personaje que aparece), Si no es así, entonces la posición Hash vida útil, el recuento ++. Explicarse como sigue:
Ejemplo: wobgrovw
i = 0, W hacia adelante, no parece guardar posición Hash calcular COUNT;
. I = 1, el consumo de O, no parece guardar posición Hash calcular COUNT;
i = 2, alimentación B, no aparece, Hash ubicación de almacenamiento, COUNT calcular;
...
i = 5, o hacia adelante, ha aparecido, esta vez comienzan a 0, debemos decir a comenzar a ajustar la posición 2, es decir, la siguiente aparición de un momento o, el punto de partida se ajusta a b
...
i = 8, w ingesta, se ha producido, esta vez para empezar a 2, sin embargo, la posición de la última aparición w comienzan antes, no afecta

código

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if (s.size() == 0)
            return 0;
        if (s.size() == 1)
            return 1;
        vector<int> Hash(128, -1);
        int count = 0;
        int Max = 0;
        int begin = 0;
        for (int i = 0; i < s.size(); i++)
        {
            if (Hash[s[i]] != -1)
            {
                begin = max(begin,Hash[s[i]] + 1);
            }
            Hash[s[i]] = i;
            count = i - begin + 1;
            if (count > Max)
                Max = count;
        }
        return Max;
    }
};
Publicado 85 artículos originales · ganado elogios 0 · Vistas 383

Supongo que te gusta

Origin blog.csdn.net/weixin_38312163/article/details/104981935
Recomendado
Clasificación