Máximo de remoções

Published by Nathan Hohnbaum in

Dada uma string, um movimento consiste em remover a substring "actor" ou a substring "intact". Ao remover uma substring, uma nova string é produzida, e movimentos podem ser feitos a partir da nova string até que não seja mais possível fazer nenhum movimento.

Por exemplo, dada a string "inactortact", primeiro é possível remover a substring "actor" para obter "intact" e depois remover a substring "intact" para obter a string vazia, a partir da qual não é mais possível fazer nenhum movimento.

O objetivo deste desafio é determinar o número máximo de movimentos que podem ser feitos a partir de uma string inicial. Observe que, em algumas situações, mais de um movimento é possível, e nem todos os movimentos permitem sequências de movimentos igualmente longas.

Por exemplo, considere a string "actintactor". É possível remover a substring "intact" para obter "actor" e depois remover "actor" para chegar à string vazia (2 movimentos), mas remover "actor" do final produz a substring "actint", a partir da qual não é mais possível fazer nenhum movimento.

Exemplos

  • "intactor": "intactor" ➞ "int" (1 movimento)
  • "actorbintact": "actorbintact" ➞ "bintact" ➞ "b" (2 movimentos)
  • "intor": não é possível fazer nenhum movimento em "intor"
  • "intintactactororact": "intintactactororact" ➞ "intintactoract" ➞ "intintact" ➞ "int" (3 movimentos)

Observações

  • Todas as strings são compostas por letras minúsculas.
  • As strings têm entre 0 e 1000 caracteres de comprimento.
  • Limite de tempo: 100 milissegundos.