Java – Heterograma o palabra sin caracteres repetidos

Hola a todos, hoy os voy a explicar como detectar si una palabra es un heterograma en Java.

Un heterograma es una palabra donde tiene una o mas caracteres alfabéticos que se repiten sin importar si son mayúsculas o minúsculas, por ejemplo, «HUMILDE» es un heterograma ya que no se repite ningún carácter.

Si quieres testear o conocer más palabras heterogramas, te recomiendo esta web.

Preparando todo lo necesario

Lo único que debemos hacer es pedir una palabra y convertirla a minúsculas para evitar problemas de case sensitive.

package es.discoduroderoer.app;

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {

        Scanner sn = new Scanner(System.in);

        System.out.println("Escribe una palabra");
        String palabra = sn.next().toLowerCase();

    }

}

Si necesitas más información sobre la clase Scanner, la tienes en este tutorial:

Introducción de datos con Scanner en Java

Algoritmo para saber si la palabra es un heterograma

El algoritmo es sencillo, lo único que debemos hacer es recorrer la palabra carácter a carácter y recorrerla de nuevo desde el siguiente carácter donde estamos para comprobar si hay alguna repetida, además, debemos tener en cuenta que solo comprobaremos en el caso de que sea una letra, el resto lo obviaremos.

Si algún carácter se repite, significa que no es una palabra heterograma.


package es.discoduroderoer.app;

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {

        Scanner sn = new Scanner(System.in);

        System.out.println("Escribe una palabra");
        String palabra = sn.next().toLowerCase();

        char caracter;
        boolean repetido = false;
        for (int i = 0; i < palabra.length() && !repetido; i++) {
            caracter = palabra.charAt(i);

            if (Character.isLetter(caracter)) {
                for (int j = i + 1; j < palabra.length() && !repetido; j++) {
                    if (caracter == palabra.charAt(j)) {
                        repetido = true;
                    }
                }
            }

        }

        if (repetido) {
            System.out.println("La palabra " + palabra + " no es un heterograma");
        } else {
            System.out.println("La palabra " + palabra + " es un heterograma");
        }

    }

}


Resultados

Por último, ya teniendo todo listo, podemos probar.

Probando una palabra que sea un heterograma

heterograma java 1Otro caso donde la palabra no es un heterograma.

heterograma java 2

Palabra con algún número de por medio.

heterograma java 3

Testeando con minúsculas y mayúsculas.

heterograma java 4

Función heterograma

Si lo quieres reutilizar, te lo dejo como función para copiarlo en tus proyectos.

public static boolean esHeterograma(String palabra) {

    char caracter;
    for (int i = 0; i < palabra.length(); i++) {
        caracter = palabra.charAt(i);
        if (Character.isLetter(caracter)) {
            for (int j = i + 1; j < palabra.length(); j++) {
                if (caracter == palabra.charAt(j)) {
                    return false;
                }
            }
        }
    }
    return true;

}

Os dejo el código en Github.

Te dejo un video donde lo explico paso a paso.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *