Algoritmo debería ser algo como a continuación:
- Cuente la aparición de todos los caracteres en la cadena
- Ahora tienes la máxima ocurrencia de todos los personajes. También ocurrencia mínima que es 0 (ya que también se permite la eliminación).
- Inicialmente intente construir toda la cadena como palíndromo, tomando un personaje desde el principio y otro desde el final.
- Comience con un personaje, ponga uno al principio y el mismo al final; Repita este proceso hasta la máxima ocurrencia uniforme del personaje. Luego cambie al siguiente carácter y siga repitiendo el proceso anterior.
- Al final, obtendrá una cadena donde los caracteres de posición extrema se colocan correctamente y los medios de la cadena deben eliminarse o reorganizarse.
Creo que podría haber múltiples enfoques para programar esto. Pero en este momento mi mente solo puede pensar en este algoritmo.
Este problema será más interesante si tenemos que hacer esto con un mínimo de eliminación y barajado.
- Cómo encontrar la menor supercadena de 2 subcadenas
- ¿Se puede aplicar BFS a gráficos ponderados?
- Quiero aprender la estructura de datos y Java, ¿cuál debería aprender primero?
- ¿Es útil leer 5 o más libros para algoritmos, o debería leer solo uno o dos y usar los otros como referencia para algún algoritmo en particular?
- ¿Cuáles son algunos patrones de diseño de C ++ para aplicaciones en tiempo real como el comercio algorítmico?
¡¡Todo lo mejor!!