Todos los anagramas en un texto

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 11
Dificultad Medio Algoritmos
Mostrar (3) CadenasTablas hashVentana deslizante
Enviar solución

Puntos: 10

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Dados dos textos \(s\) y \(p\), encuentra todas las posiciones \(i\) en las que empieza un anagrama de \(p\) dentro de \(s\): es decir, el tramo \(s_i s_{i+1} \dots s_{i+|p|-1}\) tiene exactamente las mismas letras que \(p\), con las mismas cantidades.

Entrada

La primera línea tiene \(s\) y la segunda \(p\) \((1 \le |s|, |p| \le 10^5)\), ambos de letras minúsculas.

Salida

En la primera línea, la cantidad de posiciones. En la segunda, las posiciones en orden creciente (contadas desde \(0\)).

Ejemplo 1

Entrada

cbaebabacd
abc

Salida

2
0 6

Ejemplo 2

Entrada

abab
ab

Salida

3
0 1 2

Ejemplo 3

Entrada

a
ab

Salida

0

Basado en el problema 438 de LeetCode, Find All Anagrams in a String, adaptado a entrada y salida estándar; enunciado redactado para este juez. Es parte de la lista Grind 75 de Yangshun Tay.


Comentarios

No hay comentarios por el momento.