String Matching.


Submit solution

Points: 100 (partial)
Time limit: 2.0s
Memory limit: 512M

Author:
Problem type

Dada una cadena y un patrón, su tarea es contar el número de posiciones donde aparece el patrón en la cadena.

Entrada

La primera línea de entrada contiene una cadena de longitud n y la segunda línea de entrada contiene un patrón de longitud m. Ambas constan de caracteres de la a a la z.

Salida

Imprime un entero: el número de ocurrencias.

Restricciones

  • 1 \leq n,m \leq 10^6

Ejemplo de Entrada

saippuakauppias
pp

Ejemplo de Salida

2

Comments


  • 3
    Learning_C  commented on Sept. 7, 2025, 2:14 p.m.

    Con que algoritmo se puede resolver el ejercicio?


    • 0
      Luisito0101  commented on Sept. 15, 2025, 2:19 p.m.

      tendrías que leer esto


    • 0
      Luisito0101  commented on Sept. 15, 2025, 2:16 p.m.

      usa kmp


    • 2
      juan_alejandro  commented on Sept. 7, 2025, 11:53 p.m.

      No sé los demás pero yo lo hice sacando el hashing de las cadenas con doble precisión usando dos hashes se llama polynomial rolling hash function entonces lo que hice fue sacar hashes de cada uno con un módulo y primos diferente para mejorar las colisiones porque parece que hay un caso que no daba por una colisión de ahí para allá es fuerza brutear haber cuáles coinciden.


      • 1
        Anthony08  commented on Sept. 8, 2025, 1:55 a.m.

        Yo estoy intentando hacerlo tambien con hash y comprobar si coinciden y me dan TLE 2 casos


        • 0
          juan_alejandro  commented on Sept. 8, 2025, 8:03 p.m.

          No lo estás haciendo bien ,veo que en tu código como que sacas el hash pero luego compruebas brutamente para ver si coinciden ,el punto es ver con la formula el hash de una subcadena contigua de tamaño del segundo string en el primero si coincide con el hash de la segunda completa obviamente y así se hacen las comprobaciones de si coinciden en O(1) y como el total de comprobaciones es primer string.size()-segundo string.size() se hace en O(1e6-1) que sería el peor caso cuando A es de tamaño 1e6 y B de tamaño 1, no entiendo que haces en tu código con el hash.