andresnogales

Word.java

Sep 29th, 2021 (edited)
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. import java.text.Normalizer;
  2. import java.util.Stack;
  3.  
  4. public class Word {
  5.  
  6.     private String word;
  7.    
  8.     public Word() {    
  9.     }
  10.    
  11.     public Word(String word) {
  12.         this.word = word;
  13.     }
  14.    
  15.    
  16.     public void setWord(String word) {
  17.         this.word = word;
  18.     }
  19.  
  20.  
  21.     public String getWord() {
  22.         return word;
  23.     }
  24.  
  25.     /**
  26.     //Este metodo determina si una palabra es un palindromo, comparando lo que se
  27.     // lleno en la pila, con los caracteres que tiene la palabra guardada en el
  28.     // atributo de clase. Si se encuentran caracteres diferentes retornara
  29.     // un false. Y si los caracteres coinciden
  30.     // hasta que finalice el ciclo, significara que la palabra es un palindromo y
  31.     // finalmente se retornara un true
  32.      *
  33.      * @return  valor de tipo booleano
  34.      */
  35.     public boolean isPalindrome() {
  36.         //Se transforma la palabra eliminando tildes y llevandola a minúscula
  37.         String transformedWord = transformWord(word);
  38.        
  39.         //Creación de la pila que almacenará datos de tipo char
  40.         Stack<Character> stack = new Stack<Character>();
  41.        
  42.         // Se llena la pila de tipo 'Character', con cada uno de los caracteres
  43.         // que tiene la palabra. Pero solo llenamos la pila con la mitad de la palabra
  44.         // en adelante
  45.         for (int i = transformedWord.length() / 2; i < transformedWord.length(); ++i)
  46.             stack.push(transformedWord.charAt(i));
  47.        
  48.         //Se compara la palabra con la pila, desempilando los caracteres
  49.         for(int i = 0; i < transformedWord.length()/2; i++) {
  50.             if ((Character)stack.pop() != transformedWord.charAt(i)){
  51.                 return false;
  52.             }
  53.         }
  54.         return true;
  55.     }
  56.    
  57.     // Este metodo solo muestra el mensaje de si es un palindromo o no
  58.     public void showIfPalindrome() {
  59.         if (isPalindrome())
  60.             System.out.println("La palabra '" + word + "' es un palindromo.");
  61.         else
  62.             System.out.println("La palabra '" + word + "' no es un palindromo.");
  63.     }
  64.    
  65.     /**
  66.      * Función que elimina tildes y transforma una cadena a minuscula
  67.      * @param s:    variable de tipo string a transformar
  68.      * @return      cadena string transformada
  69.      */
  70.     public String transformWord(String s) {    
  71.         s = Normalizer.normalize(s, Normalizer.Form.NFD);
  72.         s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
  73.         return s.toLowerCase();
  74.     }
  75.  
  76. }
  77.  
Add Comment
Please, Sign In to add comment