Wednesday, July 04, 2012

Solución al problema T9 Spelling [http://code.google.com/codejam] con Java

Solución al problema T9 Spelling [http://code.google.com/codejam] con Java, el link del problema es el siguiente enlace
import java.util.Scanner;

/**
 * T9 Spelling [http://code.google.com/codejam]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
    public static void main(String[] args) {
        Scanner Lee; // para leer los datos de entrada
        byte N; // para el numero total de casos de prueba
        char[] linea; // para la cadena a procesar
        byte n; // para los bucles de N
        String lineaFinal; // para la linea final
        short i; // para contar los caracteres de la linea
        String digito = ""; // para mostrar el digito a imprimir

        // AQUI INICIA EL PROGRAMA
        Lee = new Scanner(System.in);
        N = Byte.parseByte(Lee.nextLine());
        for(n = 1; n <= N; n++){
            System.out.print("Case #" + n + ": ");
            linea = Lee.nextLine().toCharArray();
            lineaFinal = "";
            for(i = 0; i < linea.length; i++){
                switch(linea[i]){
                    case 'a':
                        digito = "2";
                        break;
                    case 'b':
                        digito = "22";
                        break;
                    case 'c':
                        digito = "222";
                        break;
                    case 'd':
                        digito = "3";
                        break;
                    case 'e':
                        digito = "33";
                        break;
                    case 'f':
                        digito = "333";
                        break;
                    case 'g':
                        digito = "4";
                        break;
                    case 'h':
                        digito = "44";
                        break;
                    case 'i':
                        digito = "444";
                        break;
                    case 'j':
                        digito = "5";
                        break;
                    case 'k':
                        digito = "55";
                        break;
                    case 'l':
                        digito = "555";
                        break;
                    case 'm':
                        digito = "6";
                        break;
                    case 'n':
                        digito = "66";
                        break;
                    case 'o':
                        digito = "666";
                        break;
                    case 'p':
                        digito = "7";
                        break;
                    case 'q':
                        digito = "77";
                        break;
                    case 'r':
                        digito = "777";
                        break;
                    case 's':
                        digito = "7777";
                        break;
                    case 't':
                        digito = "8";
                        break;
                    case 'u':
                        digito = "88";
                        break;
                    case 'v':
                        digito = "888";
                        break;
                    case 'w':
                        digito = "9";
                        break;
                    case 'x':
                        digito = "99";
                        break;
                    case 'y':
                        digito = "999";
                        break;
                    case 'z':
                        digito = "9999";
                        break;
                    case ' ':
                        digito = "0";
                        break;
                }
                if(lineaFinal.length() > 0){
                    if(lineaFinal.charAt(lineaFinal.length() - 1) != digito.charAt(0))
                        lineaFinal += digito;
                    else
                        lineaFinal += (" " + digito);
                }
                else
                    lineaFinal += digito;
            }
            System.out.println(lineaFinal);
        }
    }
}

No comments: