-
Notifications
You must be signed in to change notification settings - Fork 44
Description
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
aque enb. - No hay ningún índice
ital quea[i] != b[i]ya.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'.