📌  相关文章
📜  查找最频繁的数字而不使用数组/字符串

📅  最后修改于: 2021-05-04 17:40:59             🧑  作者: Mango

给定一个整数,找到其中出现最多的数字。如果两个或多个数字出现相同的次数,则返回它们中的最高位。输入整数作为int变量而不是字符串或数组给出。不允许使用哈希,数组或字符串。
例子:

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

强烈建议您最小化浏览器,然后自己尝试。
我们可以创建一个大小为10的映射并存储所有数字的计数,但是不允许使用任何数组/字符串。
这个想法很简单,我们编写了一个函数来计算给定整数中给定数字的出现次数。然后,我们计算给定整数中从0到9的所有数字。每当计数大于或等于先前计数时,我们都会不断更新最大计数。下面是实现。

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


输出:

Max occurring digit is 5