Título
En una cadena compuesta de letras minúsculas, contiene un grupo de caracteres idénticos consecutivos.
Por ejemplo, en la cadena s = "abbxxxxzyy", hay algunos grupos como "a", "bb", "xxxx", "z" e "yy".
La agrupación se puede representar mediante el intervalo [inicio, fin], donde inicio y final representan respectivamente los subíndices de las posiciones inicial y final del grupo. La agrupación “xxxx” en el ejemplo anterior está representada por el intervalo
[3,6].
Llamamos a todos los grupos que contienen más de o igual a tres caracteres consecutivos como grupos más grandes.
Encuentre cada intervalo de agrupación más grande, ordene por el subíndice de posición inicial en orden ascendente y devuelva el resultado.
Ejemplo 1:
Entrada: s = "abbxxxxzzy"
Salida: [[3,6]]
Explicación: "xxxx" es un grupo más grande que comienza en 3 y termina en 6.
Ejemplo 2:
Entrada: s = "abc"
Salida: []
Explicación: "a", "b" y "c" no son grupos grandes que cumplen con los requisitos.
Ejemplo 3:
Entrada: s = "abcdddeeeeaabbbcd"
Salida: [[3,5], [6,9], [12,14]]
Explicación: Los grupos más grandes son "ddd", "eeee" y "bbb"
Ejemplo 4:
Entrada: s = "aba"
Salida: []
inmediato:
1 <= s.length <= 1000
s solo contiene letras minúsculas en inglés
Matriz de temas relacionados
Ideas para resolver problemas
Esta pregunta es una pregunta simple, y la idea es relativamente simple
. 1. Defina dos variables inicio y final (final-inicio + 1 es el número de las mismas letras), inicio registra la posición actual de la letra y final es la posición donde la letra termina
2. Desde la cadena Inicie el recorrido del segundo carácter de, si la siguiente letra es la misma que la letra anterior, luego continúe el bucle, diferente significa letras diferentes, calcule el número de las mismas letras
3. Si el El significado de la pregunta es mayor que 3, luego la salida, si no es suficiente Continuar atravesando, redefinir el inicio y el final
Código:
import java.util.ArrayList;
import java.util.List;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public List<List<Integer>> largeGroupPositions(String s) {
List<List<Integer>> res=new ArrayList<>();
int start=0;
int end=0;
for (int i = 1; i < s.length(); i++) {
if(s.charAt(i)==s.charAt(i-1))
{
end++;
if(end!=s.length()-1)
continue;
}
if(end-start>=2)
{
List<Integer> list=new ArrayList<>();
list.add(start);
list.add(end);
res.add(list);
}
start=end+1;
end=start;
}
return res;
}
}
efecto
La
respuesta de información fue exitosa:
tiempo de ejecución: 1 ms, superando al 100,00% de los usuarios de Java
Consumo de memoria: 38,7 MB, superando al 49,82% de los usuarios de Java