Remove recurring digits in a given number

Given a number as string, remove recurring digits from the given string. The changes must be made in-place. Expected time complexity O(n) and auxiliary space O(1).


Input:  num[] = "1299888833"
Output: num[] = "12983"

Input:  num[] = "1299888833222"
Output: num[] = "129832"

We strongly recommend you to minimize your browser and try this yourself first

This problem is similar to Run Length Encoding.

Let num[] be input number represented as character array

1) Initialize index of modified string 'j' as 0. 
2) Traverse input string and do following for every digit num[i].
   a) Copy current character 'num[i]' to 'num[j]' and increment i & j.
   b) Keep incrementing i while num[i] is same as previous digit.
3) Add string termination character at 'num[j]'

Below is C++ implementation of above algorithm.

// C++ program to remove recurring digits from
// a given number
#include <bits/stdc++.h>
using namespace std;

/* Removes recurring digits in num[]  */
void removeRecurringDigits(char num[])
    int len = strlen(num);

    int j = 0; // Index in modified string

    /* Traverse digits of given number one by one */
    for (int i=0; i<len; i++)
        /* Copy the first occurrence of new digit */
        num[j++] = num[i];

        /* Remove repeating occurrences of digit */
        while (i + 1 < len && num[i] == num[i+1])

    /* terminate the modified string */
    num[j] = '\0';

/* Driver program to test above function */
int main()
    char num[] = "1299888833";
    cout << "Modified number is " << num;
    return 0;


Modified number is 12983

This article is contributed by Priyanka. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Please write to us at to report any issue with the above content.

Recommended Posts:

1.4 Average Difficulty : 1.4/5.0
Based on 9 vote(s)