Skip to content

Commit 4c12d4a

Browse files
authored
RLE Decode div-bargali#537
RLE Decode
2 parents 69db266 + 894c2d8 commit 4c12d4a

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
//Program to decode RLE data
2+
3+
public class Main
4+
{
5+
public static void main(String[] args) {
6+
7+
//the data that has to be decoded
8+
byte data[] = {3,15,6,4};
9+
10+
//the decoded data
11+
//calling method decodeRLE()
12+
byte decoded[] = decodeRLE(data);
13+
14+
//print the decoded data
15+
for(int i=0;i<decoded.length;i++){
16+
System.out.println(decoded[i]);
17+
}
18+
19+
}
20+
21+
//method decodedRLE
22+
public static byte[] decodeRLE(byte[] rleData){
23+
24+
//size of the data that has to be decoded
25+
int n = rleData.length;
26+
27+
//array to store the numbers which represent the repeating data
28+
byte repeats[] = new byte[n/2];
29+
30+
//array to store the numbers that have to be repeated
31+
byte data2[] = new byte[n/2];
32+
33+
//size of the new decoded array
34+
int size = 0;
35+
36+
int j = 0;
37+
38+
//find the repeats
39+
for(int i=0;i<n;i+=2){
40+
repeats[j] = rleData[i];
41+
size += repeats[j];
42+
j++;
43+
}
44+
45+
j=0;
46+
47+
//find the numbers that have to be repeated
48+
for(int i=1;i<n;i+=2){
49+
data2[j] = rleData[i];
50+
j++;
51+
}
52+
53+
//create new array to store the decoded data
54+
byte decode[] = new byte[size];
55+
56+
int l=0;
57+
58+
//decode the data
59+
//use two for loops
60+
for (int i=0;i<n/2;i++){
61+
for(byte k=0;k<repeats[i];k++){
62+
decode[l] = data2[i];
63+
l++;
64+
}
65+
}
66+
67+
//return the decode array
68+
return decode;
69+
}
70+
71+
}

0 commit comments

Comments
 (0)