2010-07-29 11 views
6

Un problema che sto cercando di risolvere: dato che si hanno due stringhe distinte composte dalle lettere minuscole dalla a alla z, trovare una stringa tra le due stringhe in modo da poter trovare sempre più stringhe intermedie.Algoritmo per generare stringhe alfabetiche che sono alfabeticamente tra due altre stringhe?

Ulteriori dettagli:

Dato che 'a' viene prima 'b' in ordine alfabetico, ci sono un numero infinito di stringhe tra 'a' e 'b', quando allineati come un dizionario farebbe: 'aa', 'aaa', 'aaaa', 'ab', 'aba', ecc. Tuttavia, non c'è un numero infinito di stringhe tra tutte le stringhe - niente viene tra 'a' e 'aa'. Inoltre, tra 'a' e 'aaa' esiste solo una stringa intermedia 'aa'.

Che cos'è un algoritmo in grado di trovare una stringa X che viene in ordine alfabetico tra 'a' e 'b' che soddisfa anche la condizione che ci sia un numero infinito di stringhe tra 'a' e X come pure X e 'b '?

+0

Suggerimento: c'è anche un numero infinito di numeri (decimali) tra 1 e 2. –

+0

@zenzen: ne basta uno solo, purché sia ​​garantito il funzionamento presupponendo che gli input originali soddisfino la condizione che esista un numero infinito di stringhe tra di loro. –

risposta

4

partendo dal presupposto che si possa inserire un numero infinito di stringhe tra le due stringhe.

Se la stringa inferiore è più corta, aggiungere tante "a" da rendere uguali le lunghezze quindi aggiungere una "b" alla stringa centrale. Se la parola superiore è più corta, rendere la corda centrale uguale alla corda inferiore e aggiungere z alla corda centrale. Se le due stringhe hanno la stessa lunghezza, utilizzare entrambi i metodi.

+0

Forse mi manca qualcosa. Se le parole fossero "ab" e "b", quale sarebbe la parola intermedia? –

+0

L'ho risolto. buona chiamata. Scusa – deinst

+0

Questo algoritmo come mostrato quando scrivo questo commento produce una stringa maggiore di B, che non è consentita. – Borealid

1

Hai dichiarato tutto quello che devi sapere per trovare una soluzione. Fondamentalmente, un numero finito di stringhe esiste solo se una stringa è un prefisso dell'altro e il resto è una stringa di "a" s.

Altrimenti, è possibile trovare un numero infinito di stringhe intermedie.

Problemi correlati