# Perform n steps to convert every digit of a number in the format [count][digit]

Given a number num as a string and a number N. The task is to write a program which converts the given number num to another number after performing N steps. At each step, every digit of num will be written in the format [count][digit] in the new number, where count is the number of times a digit occurs consecutively in num.

Examples:

Input: num = “123”; n = 3
Output: 1321123113
For, n = 1: 123 becomes 1 time 1, 1 time 2, 1 time 3, hence number 111213
For, n = 2: 3 times 1, 1 time 2, 1 time 1, 1 time 3, hence number 31121113
For, n = 3: 1 time 3, 2 times 1, 1 time 2, 3 times 1, 1 time 3, hence number 1321123113

Input: num = “1213”; n = 1
Output: 11121113

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Parse the string’s characters as a single digit and maintain a count for that digit till a different digit is found. Once a different digit is found, add the count of the digit to the new string and number to it. Once the string is parsed completely, recur for the function again with this new string till n steps are done.

Below is the implementation of the above approach:

## C++

 `// C++ program to convert number ` `// to the format [count][digit] at every step ` `#include ` `using` `namespace` `std; ` ` `  `// Function to perform every step ` `void` `countDigits(string st, ``int` `n) ` `{ ` ` `  `    ``// perform N steps ` `    ``if` `(n > 0) { ` `        ``int` `cnt = 1, i; ` `        ``string st2 = ``""``; ` ` `  `        ``// Traverse in the string ` `        ``for` `(i = 1; i < st.length(); i++) { ` `            ``if` `(st[i] == st[i - 1]) ` `                ``cnt++; ` `            ``else` `{ ` `                ``st2 += (``'0'` `+ cnt); ` `                ``st2 += st[i - 1]; ` `                ``cnt = 1; ` `            ``} ` `        ``} ` ` `  `        ``// for last digit ` `        ``st2 += (``'0'` `+ cnt); ` `        ``st2 += st[i - 1]; ` ` `  `        ``// recur for current string ` `        ``countDigits(st2, --n); ` `    ``} ` ` `  `    ``else` `        ``cout << st; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` ` `  `    ``string num = ``"123"``; ` `    ``int` `n = 3; ` ` `  `    ``countDigits(num, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to convert number  ` `// to the format [count][digit] at every step ` `class` `GFG  ` `{ ` ` `  `    ``// Function to perform every step ` `    ``public` `static` `void` `countDigits(String st, ``int` `n) ` `    ``{ ` ` `  `        ``// perform N steps ` `        ``if` `(n > ``0``)  ` `        ``{ ` `            ``int` `cnt = ``1``, i; ` `            ``String st2 = ``""``; ` ` `  `            ``// Traverse in the string ` `            ``for` `(i = ``1``; i < st.length(); i++)  ` `            ``{ ` `                ``if` `(st.charAt(i) == st.charAt(i - ``1``)) ` `                    ``cnt++; ` `                ``else` `                ``{ ` `                    ``st2 += ((``char``) ``0` `+ (``char``) cnt); ` `                    ``st2 += st.charAt(i - ``1``); ` `                    ``cnt = ``1``; ` `                ``} ` `            ``} ` ` `  `            ``// for last digit ` `            ``st2 += ((``char``) ``0` `+ (``char``) cnt); ` `            ``st2 += st.charAt(i - ``1``); ` ` `  `            ``// recur for current string ` `            ``countDigits(st2, --n); ` `        ``}  ` `        ``else` `            ``System.out.print(st); ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``String num = ``"123"``; ` `        ``int` `n = ``3``; ` `        ``countDigits(num, n); ` `    ``} ` `} ` ` `  `// This code is contributed by ` `// sanjeev2552 `

## C#

 `// C# program to convert number  ` `// to the format [count][digit] at every step ` `using` `System; ` `class` `GFG  ` `{ ` ` `  `// Function to perform every step ` `public` `static` `void` `countDigits(``string` `st, ``int` `n) ` `{ ` ` `  `    ``// perform N steps ` `    ``if` `(n > 0)  ` `    ``{ ` `        ``int` `cnt = 1, i; ` `        ``string` `st2 = ``""``; ` ` `  `        ``// Traverse in the string ` `        ``for` `(i = 1; i < st.Length; i++)  ` `        ``{ ` `            ``if` `(st[(i)] == st[(i - 1)]) ` `                ``cnt++; ` `            ``else` `            ``{ ` `                ``st2 += ((``char``) 0 + (``char``) cnt); ` `                ``st2 += st[(i - 1)]; ` `                ``cnt = 1; ` `            ``} ` `        ``} ` ` `  `        ``// for last digit ` `        ``st2 += ((``char``) 0 + (``char``) cnt); ` `        ``st2 += st[(i - 1)]; ` ` `  `        ``// recur for current string ` `        ``countDigits(st2, --n); ` `    ``}  ` `    ``else` `        ``Console.Write(st); ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main()  ` `{ ` `    ``string` `num = ``"123"``; ` `    ``int` `n = 3; ` `    ``countDigits(num, n); ` `} ` `} ` ` `  `// This code is contributed by ` `// Code_Mech. `

Output:

```1321123113
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : sanjeev2552, Code_Mech

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.