Dados dos números N y M , la tarea es encontrar el conteo de dígitos en N y M que son iguales y están presentes en los mismos índices.
Ejemplos:
Entrada: N = 123, M = 321
Salida: 1
Explicación: El dígito 2 cumple la condiciónEntrada: N = 123, M = 111
Salida: 1
Enfoque: el problema se puede resolver utilizando el enfoque de dos puntos.
- Convierta N y M para facilitar el recorrido
- Cree dos punteros donde un puntero apunte al primer dígito de N y el otro al primer dígito de M respectivamente inicialmente.
- Ahora recorra ambos números de izquierda a derecha y verifique si los dígitos en ambos punteros son iguales o no.
- En caso afirmativo, aumente la cuenta.
- Aumente el puntero en 1 en cada iteración.
- Devuelve el recuento final al final.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; int countDigits(int N, int M) { // Convert N and M to string // for ease of traversal string a = to_string(N), b = to_string(M); int same_dig_cnt = 0; // Find the count of digits // that are same and occur on same indices // in both N and M. // Store the count in variable same_dig_cnt for (int i = 0; i < a.length() && b.length(); i++) if (a[i] == b[i]) same_dig_cnt++; return same_dig_cnt; } // Driver code int main() { int N = 123, M = 321; cout << countDigits(N, M); return 0;
Java
// Java implementation of the above approach class GFG { static int countDigits(int N, int M) { // Convert N and M to string // for ease of traversal String a = Integer.toString(N), b = Integer.toString(M); int same_dig_cnt = 0; // Find the count of digits // that are same and occur on same indices // in both N and M. // Store the count in variable same_dig_cnt for (int i = 0; i < a.length() && i < b.length(); i++) if (a.charAt(i) == b.charAt(i)) same_dig_cnt++; return same_dig_cnt; } // Driver code public static void main(String args[]) { int N = 123, M = 321; System.out.println(countDigits(N, M)); } } // This code is contributed by gfgking
Python3
# Python code for the above approach def countDigits(N, M): # Convert N and M to string # for ease of traversal a = str(N) b = str(M) same_dig_cnt = 0; # Find the count of digits # that are same and occur on same indices # in both N and M. # Store the count in variable same_dig_cnt i = 0 while(i < len(a) and len(b)): if (a[i] == b[i]): same_dig_cnt += 1 i += 1 return same_dig_cnt; # Driver code N = 123 M = 321; print(countDigits(N, M)); # This code is contributed by Saurabh Jaiswal
C#
// C# implementation of the above approach using System; using System.Collections; class GFG { static int countDigits(int N, int M) { // Convert N and M to string // for ease of traversal string a = N.ToString(), b = M.ToString(); int same_dig_cnt = 0; // Find the count of digits // that are same and occur on same indices // in both N and M. // Store the count in variable same_dig_cnt for (int i = 0; i < a.Length && i < b.Length; i++) if (a[i] == b[i]) same_dig_cnt++; return same_dig_cnt; } // Driver code public static void Main() { int N = 123, M = 321; Console.Write(countDigits(N, M)); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript code for the above approach function countDigits(N, M) { // Convert N and M to string // for ease of traversal let a = (N).toString(), b = (M).toString(); let same_dig_cnt = 0; // Find the count of digits // that are same and occur on same indices // in both N and M. // Store the count in variable same_dig_cnt for (let i = 0; i < a.length && b.length; i++) if (a[i] == b[i]) same_dig_cnt++; return same_dig_cnt; } // Driver code let N = 123, M = 321; document.write(countDigits(N, M)); // This code is contributed by Potta Lokesh </script>
Producción
1
Complejidad de tiempo: O(D), donde D es el recuento mínimo de dígitos en N o M
Espacio auxiliar: O(D), donde D es el recuento máximo de dígitos en N o M