Run-Length Encoding

Medium Real-World Scenarios
Compress a string by replacing runs of the same character with the character followed by its count — a basic compression scheme.

Sample input

aaabbbcccd

Sample output

a3b3c3d1

Solution

s = "aaabbbcccd"
result = []
i = 0
while i < len(s):
    count = 1
    while i + 1 < len(s) and s[i] == s[i + 1]:
        count += 1
        i += 1
    result.append(s[i] + str(count))
    i += 1
print("".join(result))
const s = "aaabbbcccd";
let result = "";
let i = 0;
while (i < s.length) {
  let count = 1;
  while (i + 1 < s.length && s[i] === s[i + 1]) {
    count++;
    i++;
  }
  result += s[i] + count;
  i++;
}
console.log(result);
public class Main {
    public static void main(String[] args) {
        String s = "aaabbbcccd";
        StringBuilder result = new StringBuilder();
        int i = 0;
        while (i < s.length()) {
            int count = 1;
            while (i + 1 < s.length() && s.charAt(i) == s.charAt(i + 1)) {
                count++;
                i++;
            }
            result.append(s.charAt(i)).append(count);
            i++;
        }
        System.out.println(result.toString());
    }
}
fun main() {
    val s = "aaabbbcccd"
    val result = StringBuilder()
    var i = 0
    while (i < s.length) {
        var count = 1
        while (i + 1 < s.length && s[i] == s[i + 1]) {
            count++
            i++
        }
        result.append(s[i]).append(count)
        i++
    }
    println(result.toString())
}
let s = Array("aaabbbcccd")
var result = ""
var i = 0
while i < s.count {
    var count = 1
    while i + 1 < s.count && s[i] == s[i + 1] {
        count += 1
        i += 1
    }
    result += String(s[i]) + String(count)
    i += 1
}
print(result)
void main() {
  final s = "aaabbbcccd";
  final result = StringBuffer();
  var i = 0;
  while (i < s.length) {
    var count = 1;
    while (i + 1 < s.length && s[i] == s[i + 1]) {
      count++;
      i++;
    }
    result.write(s[i]);
    result.write(count);
    i++;
  }
  print(result.toString());
}
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s = "aaabbbcccd";
    string result;
    int i = 0;
    while (i < (int) s.size()) {
        int count = 1;
        while (i + 1 < (int) s.size() && s[i] == s[i + 1]) {
            count++;
            i++;
        }
        result += s[i];
        result += to_string(count);
        i++;
    }
    cout << result << endl;
    return 0;
}
#include <stdio.h>
#include <string.h>

int main() {
    char s[] = "aaabbbcccd";
    int len = strlen(s);
    int i = 0;
    while (i < len) {
        int count = 1;
        while (i + 1 < len && s[i] == s[i + 1]) {
            count++;
            i++;
        }
        printf("%c%d", s[i], count);
        i++;
    }
    printf("\n");
    return 0;
}