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