Se pueden encadenar dos cadenas si la primera termina con el mismo carácter con la que comienza la segunda. Dado el conjunto de cadenas ‘n’, ¿cómo podemos verificar de manera eficiente si se pueden encadenar o no?

Este problema se puede resolver fácilmente lanzándolo en una forma gráfica teórica. En particular, podemos reducir esto para verificar si un gráfico tiene una ruta euleriana .

Considere un gráfico dirigido con caracteres como vértices. Cada cadena corresponde a una arista desde el primer carácter hasta el último. Una cadena es equivalente a una ruta euleriana en el gráfico. Por ejemplo, considere la lista de palabras que forman una cadena “perro”, “arma”, “cerca”, “barra”, “cubierta”. Esto corresponde a la ruta dirigida d → g → n → r → d → k.

Un gráfico dirigido tiene una ruta euleriana si:

  1. Todos los vértices deben tener los mismos grados de entrada y salida, o debe haber exactamente un vértice con entrada = salida + 1 y uno con salida = entrada + 1
  2. Y, todos los vértices que tienen un grado de entrada o salida diferente de cero deben formar un componente conectado.

Por lo tanto, verificar si existe una cadena se puede hacer muy rápidamente, en tiempo O (N). En realidad, generar la cadena es más trabajo, pero los algoritmos para hacerlo se describen en la página wiki.

Camino euleriano. esta es la misma pregunta enmarcada por el nombre del juego de palabras en (SPOJ)
Juez Esfera Online (SPOJ)
hermoso concepto 🙂

More Interesting

Cómo buscar en una matriz ordenada por filas y columnas

¿Por qué las empresas tecnológicas hacen preguntas sobre algoritmos difíciles en la entrevista técnica?

¿Qué preguntas me pueden hacer sobre las prácticas ágiles? ¿Cómo debo prepararme para tales preguntas?

¿Se está preparando una sexta edición de Cracking the Coding Interview? Si es así, ¿qué podemos esperar de él?

¿Qué debo elegir entre un trabajo en MNC y una pasantía en IIT?

¿Cuán diferentes son las preguntas técnicas para una entrevista de consultor de soluciones técnicas de Google de las de una entrevista de ingeniero de software?

¿Cuáles son las preguntas más comunes que se hacen en las entrevistas para IAS?

¿Cómo debo comenzar a revisar de manera competente mis conceptos de C / C ++ para entrevistas?

¿Cuáles son las cosas básicas que debe considerar para una entrevista?

¿Qué temas técnicos deberían enfocarse para prepararse para una buena entrevista de empresa de software?

¿Por qué la mayoría de las personas que acaban de obtener su BS en Informática no pueden pasar las entrevistas de codificación?

¿Qué cubren las entrevistas de programación aparte de las estructuras de datos y algoritmos?

¿Qué cambiarías en este currículum para obtener una entrevista técnica en una empresa tecnológica (como pasante de ingeniería de software)?

¿Dónde puedo encontrar un tutor de algoritmo personal que me capacite para prepararme para una entrevista de Google en el área de la Bahía de San Francisco?

¿Cuál es la manera eficiente de encontrar la mediana de la matriz ordenada 2 de igual o diferente tamaño en Java?