# Find the most frequent digit without using array/string

• Difficulty Level : Easy
• Last Updated : 19 Apr, 2021

Given an integer, find the most occurring digit in it. If two or more digits occur same number of times, then return the highest of them. Input integer is given as an int variable, not as a string or array. Use of hash or array or string is not allowed.
Example:

```Input:  x = 12234
Output: The most frequent digit is 2

Input:  x = 1223377
Output: The most frequent digit is 7

Input:  x = 5
Output: The most frequent digit is 5

Input:  x = 1000
Output: The most frequent digit is 0```

We strongly recommend you to minimize your browser and try this yourself first.
We could create a map of size 10 and store count of all digits, but use of any array/string is not allowed.
The idea is simple, we write a function that counts occurrences of a given digit in a given integer. Then we count all digits from 0 to 9 in given integer. We keep updating maximum count whenever count becomes more or same as previous count. Below is the implementation.

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 experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

## C++

 `// Finds maximum occurring digit without using any array/string``#include ``using` `namespace` `std;` `// Simple function to count occurrences of digit d in x``int` `countOccurrences(``long` `int` `x, ``int` `d)``{``    ``int` `count = 0;  ``// Initialize count of digit d``    ``while` `(x)``    ``{``        ``// Increment count if current digit is same as d``        ``if` `(x%10 == d)``           ``count++;``        ``x = x/10;``    ``}``    ``return` `count;``}` `// Returns the max occurring digit in x``int` `maxOccurring(``long` `int` `x)``{``   ``// Handle negative number``   ``if` `(x < 0)``      ``x = -x;` `   ``int` `result = 0; ``// Initialize result which is a digit``   ``int` `max_count = 1; ``// Initialize count of result` `   ``// Traverse through all digits``   ``for` `(``int` `d=0; d<=9; d++)``   ``{``      ``// Count occurrences of current digit``      ``int` `count = countOccurrences(x, d);` `      ``// Update max_count and result if needed``      ``if` `(count >= max_count)``      ``{``         ``max_count = count;``         ``result = d;``      ``}``   ``}``   ``return` `result;``}` `// Driver program``int` `main()``{``    ``long` `int` `x = 1223355;``    ``cout << ``"Max occurring digit is "` `<< maxOccurring(x);``    ``return` `0;``}`

## Java

 `// Finds maximum occurring digit``// without using any array/string``import` `java.io.*;` `class` `GFG``{``    ` `// Simple function to count``// occurrences of digit d in x``static` `int` `countOccurrences(``int` `x,``                            ``int` `d)``{``    ``// Initialize count``    ``// of digit d``    ``int` `count = ``0``;``    ``while` `(x > ``0``)``    ``{``        ``// Increment count if``        ``// current digit is``        ``// same as d``        ``if` `(x % ``10` `== d)``        ``count++;``        ``x = x / ``10``;``    ``}``    ``return` `count;``}` `// Returns the max``// occurring digit in x``static` `int` `maxOccurring( ``int` `x)``{``    ` `// Handle negative number``if` `(x < ``0``)``    ``x = -x;` `// Initialize result``// which is a digit``int` `result = ``0``;` `// Initialize count``// of result``int` `max_count = ``1``;` `// Traverse through``// all digits``for` `(``int` `d = ``0``; d <= ``9``; d++)``{``    ``// Count occurrences``    ``// of current digit``    ``int` `count = countOccurrences(x, d);` `    ``// Update max_count``    ``// and result if needed``    ``if` `(count >= max_count)``    ``{``        ``max_count = count;``        ``result = d;``    ``}``}``return` `result;``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``int` `x = ``1223355``;``    ``System.out.println(``"Max occurring digit is "` `+``                                 ``maxOccurring(x));``    ` `}``}` `// This code is contributed``// by akt_mit`

## Python3

 `# Finds maximum occurring digit``# without using any array/string` `# Simple function to count``# occurrences of digit d in x``def` `countOccurrences(x, d):``    ``count ``=` `0``; ``# Initialize count``               ``# of digit d``    ``while` `(x):``        ` `        ``# Increment count if current``        ``# digit is same as d``        ``if` `(x ``%` `10` `=``=` `d):``            ``count ``+``=` `1``;``        ``x ``=` `int``(x ``/` `10``);` `    ``return` `count;` `# Returns the max occurring``# digit in x``def` `maxOccurring(x):``    ` `    ``# Handle negative number``    ``if` `(x < ``0``):``        ``x ``=` `-``x;``    ` `    ``result ``=` `0``; ``# Initialize result``                ``# which is a digit``    ``max_count ``=` `1``; ``# Initialize count``                   ``# of result``    ` `    ``# Traverse through all digits``    ``for` `d ``in` `range``(``10``):``        ` `        ``# Count occurrences of current digit``        ``count ``=` `countOccurrences(x, d);``        ` `        ``# Update max_count and``        ``# result if needed``        ``if` `(count >``=` `max_count):``            ``max_count ``=` `count;``            ``result ``=` `d;``        ` `    ``return` `result;` `# Driver Code``x ``=` `1223355``;``print``(``"Max occurring digit is"``,``              ``maxOccurring(x));` `# This code is contributed by mits.`

## C#

 `// Finds maximum occurring digit``// without using any array/string``class` `GFG``{``    ` `// Simple function to count``// occurrences of digit d in x``static` `int` `countOccurrences(``int` `x, ``int` `d)``{``    ``// Initialize count``    ``// of digit d``    ``int` `count = 0;``    ``while` `(x > 0)``    ``{``        ``// Increment count if``        ``// current digit is``        ``// same as d``        ``if` `(x % 10 == d)``        ``count++;``        ``x = x / 10;``    ``}``    ``return` `count;``}` `// Returns the max``// occurring digit in x``static` `int` `maxOccurring( ``int` `x)``{``    ` `// Handle negative number``if` `(x < 0)``    ``x = -x;` `// Initialize result``// which is a digit``int` `result = 0;` `// Initialize count``// of result``int` `max_count = 1;` `// Traverse through``// all digits``for` `(``int` `d = 0; d <= 9; d++)``{``    ``// Count occurrences``    ``// of current digit``    ``int` `count = countOccurrences(x, d);` `    ``// Update max_count``    ``// and result if needed``    ``if` `(count >= max_count)``    ``{``        ``max_count = count;``        ``result = d;``    ``}``}``return` `result;``}` `// Driver Code``static` `void` `Main()``{``    ``int` `x = 1223355;``    ``System.Console.WriteLine(``"Max occurring digit is "` `+``                                       ``maxOccurring(x));``}``}` `// This code is contributed by mits`

## PHP

 `= ``\$max_count``)``    ``{``        ``\$max_count` `= ``\$count``;``        ``\$result` `= ``\$d``;``    ``}``}``return` `\$result``;``}` `// Driver Code``\$x` `= 1223355;``echo` `"Max occurring digit is "` `.``               ``maxOccurring(``\$x``);` `// This code is contributed by mits``?>`

## Javascript

 ``

Output:

`Max occurring digit is 5`