Skip to content

Lenguaje de los antiguos #52

@GabrielEValenzuela

Description

@GabrielEValenzuela

Descripción

En el universo del juego, el jugador encuentra un códice antiguo que contiene palabras escritas en un idioma olvidado. Si bien usa las mismas letras del alfabeto latino (a–z), el orden entre esas letras no es el mismo que en nuestro idioma.

A partir de una lista de palabras ordenadas lexicográficamente según ese idioma, tu objetivo es reconstruir el orden correcto de las letras.

Una palabra a es lexicográficamente más pequeña que una palabra b si se cumple una de las siguientes condiciones:

  • La primera letra en la que difieren es menor en a que en b.
  • No hay ningún índice i tal que a[i] != b[i] y a.length < b.length.

Deduce el orden de las letras en este idioma. Si el orden no es válido, devuelve una cadena vacía. Si hay varios órdenes de letras válidos, devuelve cualquiera de ellos.

Ejemplos

Input: ["z", "o"]
Output: "zo"
Explicación: De "z" y "o" deducimos que 'z' < 'o'.
Input: ["hrn", "hrf", "er", "enn", "rfnn"]
Output: "hernf"
Explicación:
- De "hrn" y "hrf" deducimos que 'n' < 'f'
- De "hrf" y "er" deducimos que 'h' < 'e'
- De "er" y "enn" deducimos que 'r' < 'n'
- De "enn" y "rfnn" deducimos que 'e' < 'r'
- Por lo que UNA posible solución es 'hernf'

Consideraciones

Se debe completar la lógica de la función

std::string& foreignDictionary(const std::vector<std::string>& words)
{
      //ToDo        
}

Debes buscar una solución con O(N + V + E) de tiempo y O(V + E) de espacio, donde N es la suma de las longitudes de todas las cadenas, V es el número de caracteres únicos (vértices) y E es el número de aristas.

  • words es un vector de hasta 100 palabras.

  • Cada palabra tiene al menos 1 y como máximo 100 letras.

  • Las letras son minúsculas y van de 'a' a 'z'.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requestedwontfixThis will not be worked on

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions