Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Trovare quali parole può creare un insieme di lettere?

Ignorando, per il momento, la parte SQL del problema, l'algoritmo che userei è abbastanza semplice:inizia prendendo ogni parola nel tuo dizionario e producendone una versione con le lettere in ordine, insieme a un puntatore indietro alla versione originale di quella parola.

Questo darebbe una tabella con voci come:

sorted_text word_id
act         123    /* we'll assume `act` was word number 123 in the original list */
act         321    /* we'll assume 'cat' was word number 321 in the original list */

Quindi, quando riceviamo un input (diciamo "tac"), ordiniamo le sue lettere, le cerchiamo nella nostra tabella di lettere ordinate unita alla tabella delle parole originali e questo ci dà un elenco delle parole che possono essere create da quell'input.

Se io se lo facessi, avrei le tabelle per quello in un database SQL, ma probabilmente userei qualcos'altro per pre-elaborare l'elenco di parole nel modulo ordinato. Allo stesso modo, probabilmente lascerei l'ordinamento delle lettere dell'input dell'utente a quello che stavo usando per creare il front-end, quindi SQL sarebbe lasciato a fare ciò in cui è bravo:la gestione del database relazionale.