2013-05-09 22 views
0


我想壓縮任何字符串,如果它有超過50個字符的話。如果字符大小小於50,則讓它不受影響,否則必須將其壓縮到所需限制(50)。在Java中將字符串壓縮到指定的最大字符數

我將在DB中插入此壓縮/未壓縮輸出。所以,在從數據庫取回數據的同時,我希望壓縮的字符串能夠與未壓縮的字符串(壓縮字符串的一些常見模式)輕鬆區分開來。

請建議一些最好的壓縮庫/算法?

+0

如果字符串有更多的信息可以存儲在50個字符中怎麼辦? – dlev 2013-05-09 05:29:06

+0

真的嗎?有_no_這樣的模式。如果將字符串_s_壓縮爲壓縮版本_t_,是什麼讓您認爲_t_不是合法的未壓縮字符串?你是否限制了一組有效的未壓縮字符串? – 2013-05-09 05:32:02

+0

@diev看到_War和Peace_文本壓縮爲50個字符會很酷。我認爲OP考慮到一組特定的,可能的字符串非常有限。或者,也許壓縮允許有損?如果是這樣的話,只需刪除前47個字符並添加'...'。 – 2013-05-09 05:35:10

回答

0

我會使用java.util.zip包中的Inflater/Deflater。他們使用本地ZLIB壓縮庫,並且非常高效。可以很容易地從非壓縮區分壓縮文本 - 嘗試解壓縮,你會得到一個異常,如果它是一個純文本

1

請建議一些最佳壓縮lib /算法?

不存在這樣的算法或庫,以便任何字符串可以沒有任何損失的信息被壓縮至一個給定的最大的字符(例如50)。

+0

...基於[Pigeonhole原則](http://en.wikipedia.org/wiki/Pigeonhole_principle)。 – Dukeling 2013-05-09 07:36:39