Recuento de dígitos repetidos en un número dado

Dado un número N , la tarea es contar el número total de dígitos repetidos en el número dado.

Ejemplos:

Entrada: N = 99677  
Salida: 2
Explicación:
En el número dado solo se repiten 9 y 7, por lo que la respuesta es 2.

Entrada: N = 12
Salida: 0
Explicación:
En el número dado no se repiten dígitos, por lo que la respuesta es 0.

 

Enfoque ingenuo: la idea es utilizar dos bucles anidados . En el primer ciclo, recorra desde el primer dígito del número hasta el último, uno por uno. Luego, para cada dígito en el primer ciclo, ejecute un segundo ciclo y busque si este dígito también está presente en algún otro lugar del número. En caso afirmativo, aumente el recuento requerido en 1. Al final, imprima el recuento calculado.

Complejidad de Tiempo: O(N 2 )
Espacio Auxiliar: O(1)

Enfoque eficiente: la idea es usar Hashing para almacenar la frecuencia de los dígitos y luego contar los dígitos con una frecuencia igual a más de 1. Siga los pasos a continuación para resolver el problema:

  • Cree una array de tamaño 10 para almacenar el recuento de dígitos del 0 al 9. Inicialmente almacene cada índice como 0.
  • Ahora, para cada dígito del número N, incremente la cuenta de ese índice en la array.
  • Recorra la array y cuente los índices que tienen un valor superior a 1.
  • Al final, imprima este conteo.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns the count of
// repeating digits of the given number
int countRepeatingDigits(int N)
{
    // Initialize a variable to store
    // count of Repeating digits
    int res = 0;
 
    // Initialize cnt array to
    // store digit count
 
    int cnt[10] = { 0 };
 
    // Iterate through the digits of N
    while (N > 0) {
 
        // Retrieve the last digit of N
        int rem = N % 10;
 
        // Increase the count of digit
        cnt[rem]++;
 
        // Remove the last digit of N
        N = N / 10;
    }
 
    // Iterate through the cnt array
    for (int i = 0; i < 10; i++) {
 
        // If frequency of digit
        // is greater than 1
        if (cnt[i] > 1) {
 
            // Increment the count
            // of Repeating digits
            res++;
        }
    }
 
    // Return count of repeating digit
    return res;
}
 
// Driver Code
int main()
{
    // Given array arr[]
    int N = 12;
 
    // Function Call
    cout << countRepeatingDigits(N);
    return 0;
}

Java

// Java program for the above approach
class GFG{
   
// Function that returns the count of
// repeating digits of the given number
static int countRepeatingDigits(int N)
{
    // Initialize a variable to store
    // count of Repeating digits
    int res = 0;
  
    // Initialize cnt array to
    // store digit count
  
    int cnt[] = new int[10];
  
    // Iterate through the digits of N
    while (N > 0)
    {
  
        // Retrieve the last digit of N
        int rem = N % 10;
  
        // Increase the count of digit
        cnt[rem]++;
  
        // Remove the last digit of N
        N = N / 10;
    }
  
    // Iterate through the cnt array
    for (int i = 0; i < 10; i++)
    {
  
        // If frequency of digit
        // is greater than 1
        if (cnt[i] > 1)
        {
  
            // Increment the count
            // of Repeating digits
            res++;
        }
    }
  
    // Return count of repeating digit
    return res;
}
  
// Driver Code
public static void main(String[] args)
{
    // Given array arr[]
    int N = 12;
  
    // Function Call
    System.out.println(countRepeatingDigits(N));
}
}
 
// This code is contributed by Ritik Bansal

Python3

# Python3 program for the above approach
 
# Function that returns the count of
# repeating digits of the given number
def countRepeatingDigits(N):
     
    # Initialize a variable to store
    # count of Repeating digits
    res = 0
 
    # Initialize cnt array to
    # store digit count
    cnt = [0] * 10
 
    # Iterate through the digits of N
    while (N > 0):
 
        # Retrieve the last digit of N
        rem = N % 10
 
        # Increase the count of digit
        cnt[rem] += 1
 
        # Remove the last digit of N
        N = N // 10
     
    # Iterate through the cnt array
    for i in range(10):
 
        # If frequency of digit
        # is greater than 1
        if (cnt[i] > 1):
 
            # Increment the count
            # of Repeating digits
            res += 1
         
    # Return count of repeating digit
    return res
 
# Driver Code
 
# Given array arr[]
N = 12
 
# Function call
print(countRepeatingDigits(N))
 
# This code is contributed by sanjoy_62

C#

// C# program for the above approach
using System;
class GFG{
 
// Function that returns the count of
// repeating digits of the given number
static int countRepeatingDigits(int N)
{
    // Initialize a variable to store
    // count of Repeating digits
    int res = 0;
 
    // Initialize cnt array to
    // store digit count
    int []cnt = new int[10];
 
    // Iterate through the digits of N
    while (N > 0)
    {
 
        // Retrieve the last digit of N
        int rem = N % 10;
 
        // Increase the count of digit
        cnt[rem]++;
 
        // Remove the last digit of N
        N = N / 10;
    }
 
    // Iterate through the cnt array
    for (int i = 0; i < 10; i++)
    {
 
        // If frequency of digit
        // is greater than 1
        if (cnt[i] > 1)
        {
 
            // Increment the count
            // of Repeating digits
            res++;
        }
    }
 
    // Return count of repeating digit
    return res;
}
 
// Driver Code
public static void Main(String[] args)
{
    // Given array []arr
    int N = 12;
 
    // Function Call
    Console.WriteLine(countRepeatingDigits(N));
}
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
 
// Javascript program for the above approach
 
// Function that returns the count of
// repeating digits of the given number
function countRepeatingDigits(N)
{
 
    // Initialize a variable to store
    // count of Repeating digits
    var res = 0;
 
    // Initialize cnt array to
    // store digit count
 
    var cnt = Array(10).fill(0);
 
    // Iterate through the digits of N
    while (N > 0) {
 
        // Retrieve the last digit of N
        var rem = N % 10;
 
        // Increase the count of digit
        cnt[rem]++;
 
        // Remove the last digit of N
        N = N / 10;
    }
 
    // Iterate through the cnt array
    for (var i = 0; i < 10; i++) {
 
        // If frequency of digit
        // is greater than 1
        if (cnt[i] > 1) {
 
            // Increment the count
            // of Repeating digits
            res++;
        }
    }
 
    // Return count of repeating digit
    return res;
}
 
// Driver Code
// Given array arr[]
var N = 12;
 
// Function Call
document.write( countRepeatingDigits(N));
 
// This code is contributed by rrrtnx.
</script>
Producción

0

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Método n.º 2: Uso de las funciones integradas de python:

  • Convertir entero a string.
  • Utilice la función Contador para contar la frecuencia de los caracteres.
  • Si la frecuencia es mayor que 1 incrementa el conteo

A continuación se muestra la implementación:

Python3

# Python3 program for the above approach
from collections import Counter
 
# Function that returns the count of
# repeating digits of the given number
def countRepeatingDigits(N):
   
    # converting integer to string
    number = str(N)
     
    # initializing count = 0
    count = 0
    frequency = Counter(number)
     
    # Traversing frequency
    for i in frequency:
        if(frequency[i] > 1):
           
            # increase the count
            count = count+1
    return count
 
# Driver Code
 
 
# Given array arr[]
N = 1232145
 
# Function call
print(countRepeatingDigits(N))
 
# This code is contributed by vikkycirus
Producción

2

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *