View difference between Paste ID: jJ0W2B2K and T8x0Y0zf
SHOW: | | - or go back to the newest paste.
1
//
2
// Created by Julio Tentor <jtentor@fi.unju.edu.ar>
3
//
4
5
/*
6
Dada una frase determinar si la misma es o no un palíndromo haciendo uso de
7
una pila y una cola. No se debe tener en cuenta los espacios en blanco.
8
9
 */
10
11
import java.util.Scanner;
12
import java.util.Stack;
13
14
public class CasoEjemplo_c {
15
16
    private static Scanner scanner = new Scanner(System.in);
17
18
    public void Run() {
19
20
        System.out.println("Trabajo Práctico Nº 3 - Caso Ejemplo c)\n");
21
22
        System.out.print("Ingrese un frase: ");
23
        String text = scanner.nextLine();
24
        test(text);
25
26
        // from https://es.wikipedia.org/wiki/Palíndromo
27
        test("Dábale arroz a la zorra el abad");
28
        test("¿Son mulas o cívicos alumnos?");
29
        test("Eva, can I stab bats in a cave?");
30
31
    }
32
33
    private void test(String text) {
34
        System.out.println("\"" + text + "\"" +  (isPalindrome(text) ? "" : " NO ") + " es un palíndromo" );
35
    }
36
37
    private boolean isPalindrome(String text) {
38
39
        Stack<Character> stack = new Stack<Character>();
40
        Queue<Character> queue = new Queue<Character>(text.length());
41
42
        char ch;
43
        int count = 0;
44
        for(int pos = 0; pos < text.length(); ++pos) {
45
            ch = text.charAt(pos);
46
47
            if (Character.isAlphabetic(ch)) {
48
                ch = Character.toUpperCase( ignoreAccentuation(ch) );
49
                stack.push(ch);
50
                queue.offer(ch);
51
                ++count;
52
            }
53
        }
54
55
        count /= 2;
56
        while (count-- > 0) {
57
            if ( !stack.pop().equals(queue.remove()) ) {
58
                return false;
59
            }
60
        }
61
62
        return true;
63
    }
64
65
    private char ignoreAccentuation(char ch) {
66
67
        switch(ch) {
68
            case 'Á' :
69
            case 'Ä' :
70
            case 'À' :
71
                return 'A';
72
            case 'É' :
73
            case 'Ë' :
74
            case 'È' :
75
                return 'E';
76
            case 'Í' :
77
            case 'Ï' :
78
            case 'Ì' :
79
                return 'I';
80
            case 'Ó' :
81
            case 'Ö' :
82
            case 'Ò' :
83
                return 'O';
84
            case 'Ú' :
85
            case 'Ü' :
86
            case 'Ù' :
87
                return 'U';
88
89
            case 'á' :
90
            case 'ä' :
91
            case 'à' :
92
                return 'a';
93
            case 'é' :
94
            case 'ë' :
95
            case 'è' :
96
                return 'e';
97
            case 'í' :
98
            case 'ï' :
99
            case 'ì' :
100
                return 'i';
101
            case 'ó' :
102
            case 'ö' :
103
            case 'ò' :
104
                return 'o';
105
            case 'ú' :
106
            case 'ü' :
107
            case 'ù' :
108
                return 'u';
109
        }
110
        return ch;
111
    }
112
}
113