Encuentre el dígito más frecuente sin usar array/string

Dado un número entero, encuentre el dígito que más aparece en él. Si dos o más dígitos aparecen el mismo número de veces, devuelva el mayor de ellos. El entero de entrada se proporciona como una variable int, no como una string o array. No se permite el uso de hash, array o string. 

Ejemplo: 

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

Le recomendamos encarecidamente que minimice su navegador y que pruebe esto usted mismo primero. 

Podríamos crear un mapa de tamaño 10 y almacenar el recuento de todos los dígitos, pero no se permite el uso de ninguna array/string.
La idea es simple, escribimos una función que cuenta las ocurrencias de un dígito dado en un entero dado. Luego contamos todos los dígitos del 0 al 9 en un entero dado. Seguimos actualizando el conteo máximo cada vez que el conteo es mayor o igual que el conteo anterior. A continuación se muestra la implementación.

Implementación:

C++

// Finds maximum occurring digit without using any array/string
#include <bits/stdc++.h>
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

<?php
// Finds maximum occurring digit
// without using any array/string
 
// Simple function to count
// occurrences of digit d in x
function countOccurrences($x, $d)
{
    // Initialize count of digit d
    $count = 0;
    while ($x)
    {
        // Increment count if current
        // digit is same as d
        if ($x % 10 == $d)
        $count++;
        $x = (int)($x / 10);
    }
    return $count;
}
 
// Returns the max occurring
// digit in x
function 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 = 0; $d <= 9; $d++)
{
    // 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;
echo "Max occurring digit is " .
               maxOccurring($x);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// Finds maximum occurring digit
// without using any array/string
 
     
// Simple function to count
// occurrences of digit d in x
function countOccurrences(x, d)
{
    // Initialize count
    // of digit d
    var count = 0;
    while (x > 0)
    {
        // Increment count if
        // current digit is
        // same as d
        if (x % 10 == d)
        count++;
        x = parseInt(x / 10);
    }
    return count;
}
 
// Returns the max
// occurring digit in x
function maxOccurring(x)
{
     
    // Handle negative number
    if (x < 0)
        x = -x;
     
    // Initialize result
    // which is a digit
    var result = 0;
     
    // Initialize count
    // of result
    var max_count = 1;
     
    // Traverse through
    // all digits
    for (d = 0; d <= 9; d++)
    {
        // Count occurrences
        // of current digit
        var count = countOccurrences(x, d);
     
        // Update max_count
        // and result if needed
        if (count >= max_count)
        {
            max_count = count;
            result = d;
        }
    }
    return result;
}
 
// Driver Code
var x = 1223355;
document.write("Max occurring digit is " +
                             maxOccurring(x));
 
// This code contributed by shikhasingrajput
 
</script>
Producción

Max occurring digit is 5

Complejidad temporal: O(log 10 x)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *