es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Identificación de letras dobles en un conjunto para cada letra del alfabeto – Java.

Estoy programando en el lenguaje de programación Java.

El propósito de este código es pasar por un conjunto y devolver una matriz de todos los conjuntos de palabras que contienen letras dobles (debería haber uno para cada letra del alfabeto).

Este es el código que tengo hasta ahora, actualmente está devolviendo el número 23 cuando debería devolver 26 (nuevamente, para cada letra del alfabeto). ¡Cualquier orientación sobre lo que estoy haciendo mal sería muy útil!

“`
/**
* Devuelve una matriz de todos los conjuntos de palabras que contienen letras dobles,
* un conjunto para cada letra del alfabeto. Debería haber un conjunto
* para todas las palabras que contengan "aa", una para "bb", etc.
* @param palabras conjunto de palabras
* @return matriz de conjuntos, uno para cada letra doble del alfabeto
*/
public Set<string>[] todosLosConjuntosDePalabrasQueContienenLetrasDobles(Set<string> palabras)
{
Set<string> conjuntos[] = new HashSet[26];
int contador = 0;

<pre><code>for (String palabra : palabras)
{
String minuscula = palabra.toLowerCase();
for (int i = 0; i < = conjuntos.length; i++)
{
char c = (char) ('a' + i);
String str = "" + c + c;
if (minuscula.contains(str))
{
if (conjuntos[i] == null)
{
conjuntos[i] = new HashSet<string>();
contador++;
}
conjuntos[i].add(palabra);
}
}
}

Set<string> resultado[] = new HashSet[contador];

contador = 0;

for (Set<string> s : conjuntos)
{
if (s != null)
{
resultado[contador++] = s;
}
}

return resultado;
</code></pre>

}

“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    ¡Casi lo tienes! El problema es que estás recorriendo el array de sets una vez de más. En lugar de eso, deberías recorrer el set de words. Intenta hacer el siguiente cambio en tu código:

    “`
    /**
    * Devuelve un array de todos los conjuntos de palabras que contienen letras dobles,
    * un conjunto para cada letra del alfabeto. Debería haber un conjunto
    * para todas las palabras que contienen “aa”, uno para “bb”, etc.
    * @param words conjunto de palabras
    * @return array de conjuntos, uno para cada letra doble del alfabeto
    */
    public Set[] allWordSetsContainingDoubleLetters(Set words)
    {
    Set
    sets[] = new HashSet[26];
    int count = 0;

    for (String word : words) 
    {
        for (int i = 0; i < 26; i++) 
        {
            char c = (char) ('a' + i);
            String str = "" + c + c;
    
            if (word.contains(str)) 
            {
                if (sets[i] == null) 
                {
                    sets[i] = new HashSet<string>();
                    count++;
                }
                sets[i].add(word);
            }
        }
    }
    
    Set<string> result[] = new HashSet[count];
    
    count = 0;
    
    for (Set<string> s : sets) 
    {
        if (s != null) 
        {
            result[count++] = s;
        }
    }
    
    return result;
    

    }
    “`

Comments are closed.