Skip to content
Related Articles
Remove recurring digits in a given number
• Difficulty Level : Easy
• Last Updated : 06 Nov, 2020

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).

Examples:

```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 the implementation of above algorithm.

## C++

 `// C++ program to remove recurring digits from``// a given number``#include ``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

## Java

 `// Java program to remove recurring ``// digits from a given number``class` `GFG ``{`` ` `    ``/* Removes recurring digits in num[] */``    ``static` `String removeRecurringDigits(``char` `num[])``    ``{``        ``int` `len = num.length;`` ` `        ``int` `j = ``0``; ``// Index in modified string``        ``String s = ``""``;``         ` `        ``/* Traverse digits of given number one by one */``        ``for` `(``int` `i = ``0``; i < len; i++) ``        ``{``             ` `            ``/* Copy the first occurrence of new digit */``            ``s += String.valueOf(num[i]);`` ` `            ``/* Remove repeating occurrences of digit */``            ``while` `(i + ``1` `< len && num[i] == num[i + ``1``]) ``            ``{``                ``i++;``            ``}``        ``}``        ``return` `s;``    ``}`` ` `    ``/* Driver code */``    ``public` `static` `void` `main(String[] args) ``    ``{``        ``char` `num[] = ``"1299888833"``.toCharArray();``        ``System.out.print(``"Modified number is "` `+ ``                        ``removeRecurringDigits(num));``    ``}``}`` ` `// This code has been contributed by 29AjayKumar`

## Python3

 `# Python3 program to remove recurring``# digits from a given number`` ` `# Removes recurring digits in num[]``def` `removeRecurringDigits(num):`` ` `    ``l ``=` `len``(num)``     ` `    ``# Index in modified string``    ``(i, j) ``=` `(``0``, ``0``)``    ``str` `=` `''``     ` `    ``# Traverse digits of given``    ``# number one by one``    ``while` `i < l:``         ` `        ``# Copy the first occurrence ``        ``# of new digit``        ``str` `+``=` `num[i]``        ``j ``+``=` `1``         ` `        ``# Remove repeating occurrences of digit``        ``while` `(i ``+` `1` `< l ``and` `num[i] ``=``=` `num[i ``+` `1``]):``            ``i ``+``=` `1``        ``i ``+``=` `1`` ` `    ``return` `str`` ` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``     ` `    ``num ``=` `'1299888833'``    ``print``(``'Modified number is {}'``.``format``(``           ``removeRecurringDigits(num)))`` ` `# This code is contributed by rutvik_56`

## C#

 `// C# program to remove recurring ``// digits from a given number``using` `System;`` ` `class` `GFG ``{`` ` `    ``/* Removes recurring digits in num[] */``    ``static` `String removeRecurringDigits(``char` `[]num)``    ``{``        ``int` `len = num.Length;`` ` `        ``int` `j = 0; ``// Index in modified string``        ``String s = ``""``;``         ` `        ``/* Traverse digits of given number one by one */``        ``for` `(``int` `i = 0; i < len; i++) ``        ``{``             ` `            ``/* Copy the first occurrence of new digit */``            ``s += String.Join(``""``,num[i]);`` ` `            ``/* Remove repeating occurrences of digit */``            ``while` `(i + 1 < len && num[i] == num[i + 1]) ``            ``{``                ``i++;``            ``}``        ``}``        ``return` `s;``    ``}`` ` `    ``/* Driver code */``    ``public` `static` `void` `Main() ``    ``{``        ``char` `[]num = ``"1299888833"``.ToCharArray();``        ``Console.Write(``"Modified number is "` `+ ``                        ``removeRecurringDigits(num));``    ``}``}`` ` `/* This code contributed by PrinciRaj1992 */`

Output:

`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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up