Dado un número muy grande, imprime todos los números repetidos de 3 dígitos con su frecuencia. Si un número de 3 dígitos aparece más de una vez, imprima el número y su frecuencia.
Ejemplo:
Input: 123412345123456 Output: 123 - 3 times 234 - 3 times 345 - 2 times Input: 43243243 Output: 432 - 2 times 324 - 2 times 243 - 2 times
Enfoque: dado que el número es muy grande, se almacena en una string. Inicialmente, el primer número de tres dígitos serán los primeros tres caracteres de la izquierda. Iterar en la string desde el tercer índice desde la izquierda en la string y hacer %100 para eliminar el primer carácter y agregar el i -ésimo número de índice al final para obtener el nuevo número. Aumente la frecuencia del número en el mapa hash. Al final, cuando se generan todos los números de 3 dígitos, imprima todos los números que tienen una frecuencia de más de 1.
A continuación se muestra la implementación de la idea anterior:
C++
// CPP program to print 3 digit repeating numbers #include <bits/stdc++.h> using namespace std; // function to print 3 // digit repeating numbers void printNum(string s) { int i = 0, j = 0, val = 0; // Hashmap to store the // frequency of a 3 digit number map <int, int> mp; // first three digit number val = (s[0] - '0') * 100 + (s[1] - '0') * 10 + (s[2] - '0'); mp[val] = 1; for (i = 3; i < s.length(); i++) { val = (val % 100) * 10 + s[i] - '0'; // if key already exists // increase value by 1 if (mp.find(val) != mp.end()) { mp[val] = mp[val] + 1; } else { mp[val] = 1; } } // Output the three digit numbers with frequency>1 for (auto m : mp) { int key = m.first; int value = m.second; if (value > 1) cout << key << " - " << value << " times" << endl; } } // Driver Code int main() { // Input string string input = "123412345123456"; // Calling Function printNum(input); } // This code is contributed by Nishant Tanwar
Java
// Java program to print 3 digit repeating numbers import java.util.*; import java.lang.*; public class GFG { // function to print 3 // digit repeating numbers static void printNum(String s) { int i = 0, j = 0, val = 0; // Hashmap to store the // frequency of a 3 digit number LinkedHashMap<Integer, Integer> hm = new LinkedHashMap<>(); // first three digit number val = (s.charAt(0) - '0') * 100 + (s.charAt(1) - '0') * 10 + (s.charAt(2) - '0'); hm.put(val, 1); for (i = 3; i < s.length(); i++) { val = (val % 100) * 10 + s.charAt(i) - '0'; // if key already exists // increase value by 1 if (hm.containsKey(val)) { hm.put(val, hm.get(val) + 1); } else { hm.put(val, 1); } } // Output the three digit numbers with frequency>1 for (Map.Entry<Integer, Integer> en : hm.entrySet()) { int key = en.getKey(); int value = en.getValue(); if (value > 1) System.out.println(key + " - " + value + " times"); } } // Driver Code public static void main(String args[]) { // Input string String input = "123412345123456"; // Calling Function printNum(input); } }
Python3
# Python3 program to print # 3 digit repeating numbers # Function to print 3 # digit repeating numbers def printNum(s): i, j, val = 0, 0, 0 # Hashmap to store the # frequency of a 3 digit number mp = {} # first three digit number val = ((ord(s[0]) - ord('0')) * 100 + (ord(s[1]) - ord('0')) * 10 + (ord(s[2]) - ord('0'))) mp[val] = 1 for i in range (3, len(s)): val = (val % 100) * 10 + ord(s[i]) - ord('0') # if key already exists # increase value by 1 if (val in mp): mp[val] = mp[val] + 1 else: mp[val] = 1 # Output the three digit # numbers with frequency>1 for m in mp: key = m value = mp[m] if (value > 1): print (key, " - ", value, " times") # Driver Code if __name__ == "__main__": # Input string input = "123412345123456" # Calling Function printNum(input) # This code is contributed by Chitranayal
C#
// C# program to print 3 digit repeating numbers using System; using System.Collections.Generic; class GFG { // function to print 3 // digit repeating numbers static void printNum(String s) { int i = 0, val = 0; // Hashmap to store the // frequency of a 3 digit number Dictionary<int, int> hm = new Dictionary<int, int>(); // first three digit number val = (s[0] - '0') * 100 + (s[1] - '0') * 10 + (s[2] - '0'); hm.Add(val, 1); for (i = 3; i < s.Length; i++) { val = (val % 100) * 10 + s[i] - '0'; // if key already exists // increase value by 1 if (hm.ContainsKey(val)) { hm[val] = hm[val] + 1; } else { hm.Add(val, 1); } } // Output the three digit numbers with frequency>1 foreach(KeyValuePair<int, int> en in hm) { int key = en.Key; int value = en.Value; if (value > 1) Console.WriteLine(key + " - " + value + " times"); } } // Driver Code public static void Main(String []args) { // Input string String input = "123412345123456"; // Calling Function printNum(input); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript program to print 3 digit repeating numbers // function to print 3 // digit repeating numbers function printNum(s) { let i = 0, j = 0, val = 0; // Hashmap to store the // frequency of a 3 digit number let hm = new Map(); // first three digit number val = (s[0].charCodeAt(0) - '0'.charCodeAt(0)) * 100 + (s[1].charCodeAt(0) - '0'.charCodeAt(0)) * 10 + (s[2].charCodeAt(0) - '0'.charCodeAt(0)); hm.set(val, 1); for (i = 3; i < s.length; i++) { val = (val % 100) * 10 + s[i].charCodeAt(0) - '0'.charCodeAt(0); // if key already exists // increase value by 1 if (hm.has(val)) { hm.set(val, hm.get(val) + 1); } else { hm.set(val, 1); } } // Output the three digit numbers with frequency>1 for (let [Key, Value] of hm.entries()) { let key = Key; let value = Value; if (value > 1) document.write(key + " - " + value + " times<br>"); } } // Driver Code // Input string let input = "123412345123456"; // Calling Function printNum(input); // This code is contributed by avanitrachhadiya2155 </script>
123 - 3 times 234 - 3 times 345 - 2 times
Publicación traducida automáticamente
Artículo escrito por Saurav Jain y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA