Interview Questions

Implement run length encoding and decoding.

Software QA/Tests Interview Questions from Microsoft


(Continued from previous question...)

Implement run length encoding and decoding.

Q:
Microsoft Interview Question for SDE in tests
Implement run length encoding and decoding.
Input:
aabbccaa encode:2a2b2c2a decode will be the input
Input: abcd encode:abcd decode:abcd
input:3122a encode:3122a decode:3122a
etc.


This is very similar to the look-and-say sequence in Mathematics.
1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211, ... (sequence A005150 in OEIS).
To generate a member of the sequence from the previous member, read off the digits of the previous member, counting the number of digits in groups of the same digit. For example:
1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.
1211 is read off as "one 1, then one 2, then two 1s" or 111221.
111221 is read off as "three 1s, then two 2s, then one 1" or 312211.


PSEUDOCODE:
x[] = 1112211311
output = new char[ 2 * sizeof(x) ];
x_itr = 0; out_itr=-1;

if x==null
return;

char temp;
int count=0;
while(x[ x_itr ] != \0 )
{
temp = str[i];

count = 1;
while( x[x_itr+1] == x[x_itr] && x[x_itr+1] !=\0 )
{
count++;
x_itr++;
}

output[ ++out_itr ] = count;
output[ ++out_itr ] = temp;
x_itr++;
}

output[ ++out_itr ] = \0;

(Continued on next question...)

Other Interview Questions