Run-Length Encoding
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;
}