jtentor icon

Queue (en Java) de Estructura de Datos - CasoEjemplo_c.java

jtentor | PRO | 10/05/20 09:59:05 PM UTC | 0 ⭐ | 843 👁️ | Never ⏰ | []
Java |

2.82 KB

|

None

|

0 👍

/

0 👎

//
// Created by Julio Tentor <[email protected]>
//
 
/*
Dada una frase determinar si la misma es o no un palíndromo haciendo uso de
una pila y una cola. No se debe tener en cuenta los espacios en blanco.
 
 */
 
import java.util.Scanner;
import java.util.Stack;
 
public class CasoEjemplo_c {
 
    private static Scanner scanner = new Scanner(System.in);
 
    public void Run() {
 
        System.out.println("Trabajo Práctico Nº 3 - Caso Ejemplo c)\n");
 
        System.out.print("Ingrese un frase: ");
        String text = scanner.nextLine();
        test(text);
 
        // from https://es.wikipedia.org/wiki/Palíndromo
        test("Dábale arroz a la zorra el abad");
        test("¿Son mulas o cívicos alumnos?");
        test("Eva, can I stab bats in a cave?");
 
    }
 
    private void test(String text) {
        System.out.println("\"" + text + "\"" +  (isPalindrome(text) ? "" : " NO ") + " es un palíndromo" );
    }
 
    private boolean isPalindrome(String text) {
 
        Stack<Character> stack = new Stack<Character>();
        Queue<Character> queue = new Queue<Character>(text.length());
 
        char ch;
        int count = 0;
        for(int pos = 0; pos < text.length(); ++pos) {
            ch = text.charAt(pos);
 
            if (Character.isAlphabetic(ch)) {
                ch = Character.toUpperCase( ignoreAccentuation(ch) );
                stack.push(ch);
                queue.offer(ch);
                ++count;
            }
        }
 
        count /= 2;
        while (count-- > 0) {
            if ( !stack.pop().equals(queue.remove()) ) {
                return false;
            }
        }
 
        return true;
    }
 
    private char ignoreAccentuation(char ch) {
 
        switch(ch) {
            case 'Á' :
            case 'Ä' :
            case 'À' :
                return 'A';
            case 'É' :
            case 'Ë' :
            case 'È' :
                return 'E';
            case 'Í' :
            case 'Ï' :
            case 'Ì' :
                return 'I';
            case 'Ó' :
            case 'Ö' :
            case 'Ò' :
                return 'O';
            case 'Ú' :
            case 'Ü' :
            case 'Ù' :
                return 'U';
 
            case 'á' :
            case 'ä' :
            case 'à' :
                return 'a';
            case 'é' :
            case 'ë' :
            case 'è' :
                return 'e';
            case 'í' :
            case 'ï' :
            case 'ì' :
                return 'i';
            case 'ó' :
            case 'ö' :
            case 'ò' :
                return 'o';
            case 'ú' :
            case 'ü' :
            case 'ù' :
                return 'u';
        }
        return ch;
    }
}
 

Comments