Máximo de eliminaciones

Published by Nathan Hohnbaum in

Dada una cadena, un movimiento consiste en eliminar la subcadena "actor" o la subcadena "intact". Al eliminar una subcadena, se produce una nueva cadena, y se pueden hacer movimientos a partir de la nueva cadena hasta que ya no sea posible hacer más movimientos.

Por ejemplo, dada la cadena "inactortact", primero se puede eliminar la subcadena "actor" para obtener "intact" y luego eliminar la subcadena "intact" para obtener la cadena vacía, a partir de la cual ya no se pueden hacer más movimientos.

El objetivo de este desafío es determinar el número máximo de movimientos que se pueden hacer a partir de una cadena inicial. Ten en cuenta que, en algunas situaciones, es posible hacer más de un movimiento, y no todos los movimientos permiten secuencias de movimientos igual de largas.

Por ejemplo, considera la cadena "actintactor". Se puede eliminar la subcadena "intact" para obtener "actor" y luego eliminar "actor" para llegar a la cadena vacía (2 movimientos), pero eliminar "actor" del final produce la subcadena "actint", a partir de la cual ya no es posible hacer más movimientos.

Ejemplos

  • "intactor": "intactor" ➞ "int" (1 movimiento)
  • "actorbintact": "actorbintact" ➞ "bintact" ➞ "b" (2 movimientos)
  • "intor": en "intor" no se puede hacer ningún movimiento
  • "intintactactororact": "intintactactororact" ➞ "intintactoract" ➞ "intintact" ➞ "int" (3 movimientos)

Notas

  • Todas las cadenas están compuestas por letras minúsculas.
  • Las cadenas tienen entre 0 y 1000 caracteres de longitud.
  • Límite de tiempo: 100 milisegundos.