Cómo resolver UVa 1449 usando hashing

UVa 1449 tiene varios componentes:

  1. Cargar los patrones
  2. Cuente la aparición de cada patrón en la cadena de entrada
  3. Salida de los patrones dominantes
  4. Repita según sea necesario (hasta que el recuento de patrones sea 0)

Debe resolver cada una de esas partes, y podría usar una tabla hash para ayudar (aunque ciertamente no es necesario).

Imagine que la primera entrada es:

2
foo
bar
bingfoofoobarfoopipobazboo

Comenzamos por ver que hay dos patrones: foo y bar.

Así que vamos a hacer algo así …

patrones [“foo”] = 0
patrones [“bar”] = 0

Esto está utilizando una tabla hash (o cualquier tipo de matriz asociativa) para asignar los patrones a un contador.

Ahora haces algo como esto:

foreach (patrón en patrones) {
patrones [patrón] = recuento (patrón, entrada)
}

La forma de implementar el recuento depende de usted.

Ahora su tabla hash se ve así:

patrones [“foo”] = 3
patrones [“bar”] = 1

El patrón dominante es foo.

Entonces imprime su salida:

3
foo

La tabla hash no es la clave de la solución: es simplemente un mecanismo para asignar el patrón al recuento de ocurrencias para que pueda encontrar el patrón dominante.