Ejercicio java: Collar con cuentas de colores

Ejercicio tomado de: Primer Concurso Local de Programación ACM ICPC - Universidad Autónoma Metropolitana Unidad Azcapotzalco.

Este es un ejemplo en el cual podemos hacer uso de vectores.


Collar con cuentas de colores

Cierta persona tiene un collar circular con cuentas de colores: hay cuentas amarillas, blancas, cafés, etc., de modo que podemos describir el collar comenzando en cualquier lugar del mismo, avanzando siempre en la misma dirección e indicando la inicial del color correspondiente (una letra minúscula de la a a la z) hasta llegar a la última cuenta. Esta persona quiere responder dos preguntas que le hicieron acerca de su collar. La primera pregunta es ¿cuántos colores distintos hay en su collar? (llamemos c a esta cantidad). La segunda pregunta es ¿cuál es la longitud del segmento más largo de su collar tal que todas las cuentas son del mismo color? (llamemos m a esta cantidad). Escriba un programa que ayude al dueño del collar a calcular las doss cantidades c y m. En el collar descrito en el ejemplo de abajo hay 3 colores distintos, hay un segmento de 4 cuentas del mismo color.

Ejemplo de entrada: uamaaauumaummuauamumummmmua
Ejemplo de salida: 3     4 ( donde 3 es la cantidad de colores y 4 el segmento mas largo).


Solución.

package ejeCollar;

import java.util.Scanner;

public class aplic {

public static void main(String[] args) {
Scanner leer=new Scanner(System.in);
String collar=leer.nextLine();

char [] lista=collar.toCharArray();
int c=0,m=1,may=1;
for (int i = 0; i < lista.length-1; i++) {
if (lista[i]==lista[i+1]) {
may++;
if (m<may) {
m=may;
}
}
else{
may=1;
}
}
for (int i = 0; i < lista.length; i++) {
may=1;
for (int j = i+1; j <= lista.length-1; j++) {
if (lista[i]==lista[j]) {
lista[j]='.';
}
}
}
for (int i = 0; i < lista.length; i++) {
if (lista[i]!='.') {
c++;
}
}
System.out.println(c+"\t"+m);
}

}

1 comentario: