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;
}
};