我有這個樣子很長整型序列的序列(任意長度!):編碼/壓縮重複整數
0000000001110002220033333
現在我需要一些算法,這個字符串轉換成一些壓縮像
a9b3a3c3a2d5
這意味着「a 9次,然後b 3次,然後3次」等等,其中「a」代表0,「b」代表1,「c」代表2,「d」代表3。
你會怎麼做? 到目前爲止,沒有什麼合適的東西出現在我的腦海裏,而且我對谷歌沒有好運,因爲我真的不知道要搜索什麼。這種編碼/壓縮稱爲什麼?
PS:我打算用PHP進行編碼,而在的解碼中使用JavaScript。
編輯:謝謝大家!
我結束了此功能編碼:
protected function numStringToRle($s){
$rle = '';
$count = 1;
$len = strlen($s);
for($i = 0; $i < $len; $i++){
if($i != $len && isset($s[$i+1]) && $s[$i] == $s[$i+1]){
$count++;
} else {
$rle .= chr($s[$i] + 97).($count == 1 ? '' : $count);
$count = 1;
}
}
return $rle;
}
而且,對於解碼:
var decodeCoords = function(str) {
str = str.replace(/(.)(\d+)/g, function(_, x, n) {
return new Array(parseInt(n, 10) + 1).join(x);
});
return str.
replace(/a/g, '0').
replace(/b/g, '1').
replace(/c/g, '2').
replace(/d/g, '3');
};
你到底是用這個做什麼?你確定你不能用Gzip壓縮它嗎? HTTP://計算器。com/questions/294297/javascript-implementation-of-gzip 這將會更加有效的時間和空間明智的,它已經爲你完成。 – ryeguy 2010-04-02 13:20:56
gzip不是一個選項,因爲我需要用javascript解碼。我使用它作爲2D遊戲的一種掩碼。 – Alex 2010-04-02 13:27:46