Come altri posters hanno dichiarato, non è possibile avere una funzione che accorcia le stringhe arbitrarie, che è matematicamente impossibile. Ma puoi creare una funzione personalizzata che funzioni bene con il tuo particolare set di stringhe.
Un approccio esempio sarebbe calcolare la frequenza carattere nel set, poi solo codificare i caratteri con un prefix code tale che le lettere più frequenti sono codificati con brevi prefissi (cioè Huffman coding.)
Tale approccio fa non approfittare del fatto che nel linguaggio naturale il prossimo personaggio può essere predetto in modo abbastanza accurato da quelli precedenti, quindi è possibile estendere l'algoritmo di cui sopra in modo che invece di codificare i caratteri in modo indipendente, codifichi il prossimo carattere in un n-grammo. Ciò richiede ovviamente una tabella di compressione più grande rispetto all'approccio semplice, dal momento che si sta effettivamente avendo un codice separato in base al prefisso. Ad esempio se 'e' è molto frequente dopo 'th', quindi 'e' dopo 'th' è codificato con un prefisso molto breve. Se 'e' è molto raro dopo 'ee', allora in questo caso può essere codificato con un prefisso molto lungo. L'algoritmo di decodifica ha ovviamente bisogno di guardare il prefisso attualmente decompresso per verificare come decodificare il prossimo carattere.
Questo approccio generale presuppone che le frequenze non cambino o almeno cambino lentamente. Se il tuo set di dati cambia rispetto a quello che potresti dover ricalcolare le statistiche e ricodificare le stringhe.
fonte
2012-03-30 13:13:55
Le stringhe devono essere di lunghezza fissa? –
Se si dispone di un database, l'elaborazione dell'inversione dovrebbe essere piuttosto semplice ... –
1 - Le stringhe non hanno una lunghezza fissa. Lunghezza massima = 200 caratteri 2 - Voglio evitare la chiamata DB. Questa è la ragione per cui voglio generare un algoritmo. Quale può essere usato in DB per codificare le stringhe. Lo stesso algoritmo può essere usato per decodificare e ottenere un valore reale nella mia applicazione web – Taher