botón de estancia: no hay repetición de 3 caracteres de la subcadena más larga
Descripción Título:
Dada una cadena, te enteras de que no contiene un sub-longitud de la cadena más larga de caracteres repetidos.
Ejemplo 1:
De entrada: "abcabcbb"
de salida: 3
Explicación: Debido a que la subcadena más larga de caracteres sin repetición es "abc", por lo que su longitud es de 3.
Ejemplo 2:
De entrada: "bbbbb"
de salida: 1
Explicación: Debido a que la subcadena más larga se repite sin caracteres "b", por lo que su longitud es 1.
Ejemplo 3:
De entrada: "pwwkew"
de salida: 3
Explicación: Debido a la más larga sub-cadena se repite sin caracteres "WKE", por lo que su longitud es de 3.
Tenga en cuenta que su respuesta debe ser una subcadena de longitud, "pwke" es una sub-secuencia, no es una subcadena.
Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/longest-substring-without-repeating-characters
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.
**** Solución: Utilice un método similar al hachís, con espacio de almacenamiento a cambio de la comodidad del recorrido.
int lengthOfLongestSubstring(char *s){
int max=0;// 用来记录当前已探测到的最长子串的长度
int head=0;
int rear=0;
int table[128]={0};
for(head=0;head<strlen(s);head++){
int i = (int)s[head];
if(table[i]!=0){// 发生重复,更新rear位置
rear = (table[i]>=rear)?table[i]:rear;
}
max = (max>=(head-rear+1))?max:head-rear+1; // 更新最大不重复子串的位数
}
return ret;
}