Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.text.Normalizer;
- import java.util.Stack;
- public class Word {
- private String word;
- public Word() {
- }
- public Word(String word) {
- this.word = word;
- }
- public void setWord(String word) {
- this.word = word;
- }
- public String getWord() {
- return word;
- }
- /**
- //Este metodo determina si una palabra es un palindromo, comparando lo que se
- // lleno en la pila, con los caracteres que tiene la palabra guardada en el
- // atributo de clase. Si se encuentran caracteres diferentes retornara
- // un false. Y si los caracteres coinciden
- // hasta que finalice el ciclo, significara que la palabra es un palindromo y
- // finalmente se retornara un true
- *
- * @return valor de tipo booleano
- */
- public boolean isPalindrome() {
- //Se transforma la palabra eliminando tildes y llevandola a minúscula
- String transformedWord = transformWord(word);
- //Creación de la pila que almacenará datos de tipo char
- Stack<Character> stack = new Stack<Character>();
- // Se llena la pila de tipo 'Character', con cada uno de los caracteres
- // que tiene la palabra. Pero solo llenamos la pila con la mitad de la palabra
- // en adelante
- for (int i = transformedWord.length() / 2; i < transformedWord.length(); ++i)
- stack.push(transformedWord.charAt(i));
- //Se compara la palabra con la pila, desempilando los caracteres
- for(int i = 0; i < transformedWord.length()/2; i++) {
- if ((Character)stack.pop() != transformedWord.charAt(i)){
- return false;
- }
- }
- return true;
- }
- // Este metodo solo muestra el mensaje de si es un palindromo o no
- public void showIfPalindrome() {
- if (isPalindrome())
- System.out.println("La palabra '" + word + "' es un palindromo.");
- else
- System.out.println("La palabra '" + word + "' no es un palindromo.");
- }
- /**
- * Función que elimina tildes y transforma una cadena a minuscula
- * @param s: variable de tipo string a transformar
- * @return cadena string transformada
- */
- public String transformWord(String s) {
- s = Normalizer.normalize(s, Normalizer.Form.NFD);
- s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
- return s.toLowerCase();
- }
- }
Add Comment
Please, Sign In to add comment