largeGroupPositions: la posición del grupo más grande

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

Supongo que te gusta

Origin blog.csdn.net/tangshuai96/article/details/112217612
Recomendado
Clasificación