Printing frequency of each character just after its consecutive occurrences
Given a string in such a way that every character occurs in a repeated manner. Your task is to print the string by inserting the frequency of each unique character after it and also eliminating all repeated characters.
Examples:
Input: GeeeEEKKKss
Output: G1e3E2K3s2
Input: ccccOddEEE
Output: c4O1d2E3
One approach to solve the above problem is to start a loop till the end of the string and for every iteration, increment a count till the character at ith position matches the following character.
Below is the implementation to the above given problem.
C++
// CPP program to print run
// length encoding of a string
#include <iostream>
using namespace std;
void printRLE(string s)
{
for (int i = 0; s[i] != '\0'; i++) {
// Counting occurrences of s[i]
int count = 1;
while (s[i] == s[i + 1]) {
i++;
count++;
}
cout << s[i] << count << " ";
}
cout << endl;
}
// Driver code
int main()
{
printRLE("GeeeEEKKKss");
printRLE("ccccOddEEE");
return 0;
}
Java
public class Main {
public static void printRLE(String s) {
for (int i = 0; i < s.length(); i++) {
int count = 1;
while (i + 1 < s.length() && s.charAt(i) == s.charAt(i + 1)) {
i++;
count++;
}
System.out.print(s.charAt(i) + "" + count + " ");
}
System.out.println();
}
public static void main(String[] args) {
printRLE("GeeeEEKKKss");
printRLE("ccccOddEEE");
}
}
C#
// C# program to print run
// length encoding of a string
using System;
class GFG {
static void printRLE(String s)
{
for (int i = 0;
i < s.Length - 1; i++) {
// Counting occurrences of s[i]
int count = 1;
while (s[i] == s[i + 1]) {
i++;
count++;
if (i + 1 == s.Length)
break;
}
Console.Write(s[i] + "" + count + " ");
}
Console.WriteLine();
}
// Driver code
public static void Main(String[] args)
{
printRLE("GeeeEEKKKss");
printRLE("ccccOddEEE");
}
}
// This code contributed by Rajput-Ji
Javascript
<script>
// Javascript program to print run
// length encoding of a string
function printRLE(s)
{
for(var i = 0; i < s.length; i++)
{
// Counting occurrences of s[i]
var count = 1;
while (i + 1 < s.length &&
s.charAt(i) == s.charAt(i + 1))
{
i++;
count++;
}
document.write(s.charAt(i) + "" +
count + " ");
}
document.write("<br>");
}
// Driver code
printRLE("GeeeEEKKKss");
printRLE("ccccOddEEE");
// This code is contributed by Ankita saini
</script>
Python 3
def printRLE(s):
i = 0
while i < len(s):
count = 1
while i + 1 < len(s) and s[i] == s[i + 1]:
i += 1
count += 1
print(s[i] + str(count), end=" ")
i += 1
print()
printRLE("GeeeEEKKKss")
printRLE("ccccOddEEE")
OutputG1 e3 E2 K3 s2
c4 O1 d2 E3
Time Complexity: O(n)
Auxiliary Space: O(1)
Last Updated :
19 Mar, 2024
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...