Table of Contents
Run length encoding on the given input string.
Example
Input string is : “aaaabbbddddzz”
Output string : a4b3d4z2
Here, a is coming 4 times, b is coming 3 times, d is coming 4 times and z is coming 2 times.
Time complexity: O(n)
Algorithm
1. Pick the first character from the input string.
2. Append the picked character to the output string.
3. Count the number of subsequent occurrences of the same picked character.
4. Append the count into output string.
5. Pick the next character and repeat the above steps again.
6. Do this until the end of string is reached.
7. print the final output string.
C++ Program
#include <bits/stdc++.h> using namespace std; #define N 50//Max r_len //functiont to encode char *encode(char *string) { int r_len; char count[N]; int length = strlen(string); //max size will be 2*length + 1 char *result = (char *)malloc(sizeof(char)*(length*2 + 1)); int i, j = 0, k; /* traverse the input string one by one */ for(i = 0; i < length; i++) { //First occurence of char result[j++] = string[i]; //Find the number of occurences r_len = 1; while(i + 1 < length && string[i] == string[i+1]) { r_len++; i++; } //store it in count array sprintf(count, "%d", r_len); for(k = 0; *(count+k); k++, j++) { result[j] = count[k];//copy to destination } } //Null termination result[j] = '\0'; return result; } //Main function int main() { char string[] = "aaaabbbddddzz"; char *result = encode(string); cout<<"Output string:"; cout<<result; }