El documento describe una estrategia para ordenar una cadena de caracteres sin repeticiones consecutivas de más de 3 caracteres del mismo color. La estrategia consiste en 1) crear una primera tira sin repeticiones usando dos pilas, 2) insertar los caracteres repetidos en la tira usando la pila de repetidos, y 3) devolver la tira ordenada.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Banderines examen resuelto estructura de datos con java usando pilas
1. Class Empresa 1/2
/**
* PREGUNTA 1 DEL EXAMEN DE SEGUNDO PARCIAL
* SE REQUIEREN DOS PILAS UNA PARA FORMAR LA TIRA DE NO REPETIDOS
* Y OTRA PARA ALMACENAR LOS REPETIDOS
*
* ESTRATEGIA:
* 1 CONSTRUIR LA PRIMERA TIRA SIN REPETICIONES
* RESULTADO DE ESTE PROCESO SE TENDRA UNA PRIMERA TIRA
* Y UNA PILA DE ELEMENTOS REPETIDOS QUE NO SE PUDIERON ACOMODAR EN UNA PASADA
* 2 INSERTAR LOS REPETIDOS EN LA TIRA
* RESULTADO DE ESTE PROCESO SE TENDRA QUE LA PILA DE REPETIDOS
* SE VACIARA Y SE OBTENDRA LA TIRA FINAL
* 3 MOSTRAR LA CADENA RESULTANTE
* RESULTADO DE ESTE PROCESO ES LA CADENA RESULTADO DE LOS BANDERINES
* QUE SE ENCUENTRAN EN LA TIRA
*
* LA CONDICION DEL PROBLEMA ES QUE EN LA ENTRADA ORIGINAL, JAMAS SE
* TENDRA MAS DE 3 INSTANCIAS DE BANDERIN DEL MISMO COLOR CONSECUTIVO
* Y QUE LA CANTIDAD DE COLORES ES LA MISMA. POR LO QUE, EN DOS RONDAS
* SE TENDRA UNA TIRA CON LAS CONDICIONES QUE SE REQUIEREN.
*
* @author MLBC
* @version 31.12.09
*/
import EDL.*;
public class Empresa
{
/*
* Metodo que dirige todo el proceso, y procesa los tres pasos
* generales de la solucion
*
*/
public String generar(String entrada)
{
Pila<Character> tira, repetidos;
tira = new Pila<Character>();
repetidos = new Pila<Character>();
crearTira(entrada, tira, repetidos);
eliminarRepetidos(tira, repetidos);
return mostrar(tira);
}
/* Metodo crearTira, que lee cada caracter de una cadena de entrada
* e intenta acomodar en una tira sin repeticiones.
* Al mismo tiempo genera la pila de repticiones, pero tambien
* intenta la insercion de las repeticiones en la tira
*
* el resultado de este proceso es que las pilas cambiaran de estado
*/
private void crearTira(String entrada,
Pila<Character> tira,
Pila<Character> repetidos)
{
Character band;
for(int i = 0; i < entrada.length(); i ++)
{
Dec 31, 2009 8:32:04 AM
2. Class Empresa (continued) 2/2
band = entrada.charAt(i);
if(tira.vacia()) tira.push(band);
else if(tira.top().equals(band))
repetidos.push(band);
else {
tira.push(band);
if(!repetidos.vacia())
if(!repetidos.top().equals(band))
tira.push(repetidos.pop());
}
}
}
/* Metodo que permite insetar los elementos repetidos en la tira
* que se ha generado en una primera pasada.
*
* Esta demostrado que este problema se resuleve en a lo sumo dos
* pasadas sobre la tira
*
* Al terminar, la pila tira tendra los nuevos elementos incorporados
* y la pila repetidos quedara vacia
*/
private void eliminarRepetidos(Pila<Character> tira, Pila<Character> repetidos)
{
if(!repetidos.vacia())
crearTira(mostrar(tira), tira, repetidos);
}
/*
* Metodo que permite reconstruir la cadena resultante sobre la base
* de los elementos de la pila
*
* El resultado de este proceso es una cadena y en consecuencia la pila
* tira queda vacia
*/
private String mostrar(Pila<Character> tira)
{
String res = "";
while(!tira.vacia())
res = tira.pop() + res;
return res;
}
}
Dec 31, 2009 8:32:05 AM