Leetcode Leetcode 830. Ubicación del grupo más grande

Tema:

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, final], donde inicio y final representan los subíndices de las posiciones inicial y final del grupo, respectivamente. La agrupación “xxxx” en el ejemplo anterior está representada por el intervalo [3,6].
Llamamos a todos los grupos que contienen más o igual a tres caracteres consecutivos como grupos más grandes.
Encuentre cada intervalo de agrupación más grande, ordene por í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: []

Solución:

Recorra la lista s.
Registre la aparición de números repetidos en cada matriz repetida como recuento (la matriz repetida también puede aparecer una sola vez).
Para cada matriz repetida, el
valor atravesado no es igual al siguiente dígito
o la secuencia completa La finalización de todo el recorrido se puede utilizar como condición final para completar el recorrido repetido de la matriz.
En este momento, se puede determinar si el número de apariciones de esta matriz es mayor que tres.
Si es mayor que tres, la posición inicial y final la posición se agregará como una nueva lista al resultado res
(tenga en cuenta que debe juzgar la finalización del recorrido La condición de que todos los recorridos se juzgarán primero)
(se usa para evitar fuera de límites durante el recorrido de la matriz) y
finalmente volver a res completar

Código:

class Solution:
    def largeGroupPositions(self, s: str) -> List[List[int]]:
        res = []
        n = len(s)
        count = 1

        for i in range(n):
            if i == n - 1 or s[i] != s[i + 1] :
                if count >= 3:
                    res.append([i - count + 1, i])
                count = 1
            else:
                count += 1
        
        return res

Responder:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_50791900/article/details/112421343
Recomendado
Clasificación