2010-07-29 15 views
6

Un problema que estoy tratando de resolver: dado que tiene dos cadenas distintas compuestas de letras minúsculas de la aa la z, busque una cadena entre las dos cadenas de manera que siempre se puedan encontrar cadenas intermedias adicionales.Algoritmo para generar cadena alfabética que está alfabéticamente entre otras dos cadenas?

más detalle:

Teniendo en cuenta que 'a' viene antes de 'b' por orden alfabético, hay un número infinito de cadenas entre 'a' y 'b', cuando se clasifica como un diccionario sería: 'aa', 'aaa', 'aaaa', 'ab', 'aba', etc. Sin embargo, no hay un número infinito de cadenas entre todas las cadenas, nada se interpone entre 'a' y 'aa'. Además, entre 'a' y 'aaa' existe solo una cadena intermedia 'aa'.

¿Qué es un algoritmo que puede encontrar una cadena X que viene alfabéticamente entre 'a' y 'b' que también cumple la condición de que hay infinitas cadenas entre 'a' y X así como X y 'b ¿?

+0

Sugerencia: también hay un número infinito de números (decimales) entre 1 y 2. –

+0

@zenzen: solo se necesita uno, siempre y cuando se garantice que funciona suponiendo que las entradas originales cumplen la condición de que existe un número infinito de cuerdas entre ellos. –

Respuesta

4

suponiendo que se puede insertar un número infinito de cadenas entre las dos cadenas.

Si la cuerda más baja es más corta, agregue tantas 'a como para hacer las longitudes iguales y luego agregue una' b 'a la cuerda del medio. Si la palabra superior es más corta, haga que la cuerda del medio sea igual a la cuerda inferior y añada z a la cuerda del medio. Si las dos cadenas tienen la misma longitud, use cualquiera de los métodos.

+0

Quizás me esté perdiendo algo. Si las palabras fueran 'ab' y 'b', ¿cuál sería la palabra intermedia? –

+0

Lo arreglé. buena llamada. Lo siento – deinst

+0

Este algoritmo, como se muestra cuando escribo este comentario, produce una cadena mayor que B, que no está permitida. – Borealid

1

Ha declarado todo lo que necesita saber para encontrar una solución. Básicamente, existe un número finito de cadenas solo si una cadena es un prefijo de la otra y el resto es una cadena de "a" s.

De lo contrario, puede encontrar un número infinito de cadenas intermedias.

Cuestiones relacionadas