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

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`

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.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

2

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