# Print all K digit repeating numbers in a very large number

Given a very large number N in form of string and a number K, the task is to print all the K-digit repeating numbers whose frequency is greater than 1.
Examples:

Input: str = “123412345123456”, K = 4
Output:
1234 – 3
2345 – 2
Explanation:
The 4-digit numbers having frequency greater than 1 is 1234 and 2345.

Input: N = 1432543214325432, K = 5
Output:
14325 – 2
32543 – 2
43254 – 2
Explanation:
The 5-digit numbers having frequency greater than 1 is 14325, 32543, and 43254.

Approach: Since the number is given in the form of a string, therefore the idea is to store all the substring of size K in a map with their frequency. Now, while iterating the Map print only those substrings which have a frequency greater than one along with the number of times they appear.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach  ` `#include   ` `using` `namespace` `std;  ` ` `  `// Function to print all K digit  ` `// repeating numbers  ` `void` `print_Kdigit(string S, ``int` `K)  ` `{  ` ` `  `    ``// Map to store the substrings  ` `    ``// with their frequencies  ` `    ``map m;  ` ` `  `    ``// Iterate over every substring  ` `    ``// and store their frequencies  ` `    ``// in the map  ` `    ``for` `(``int` `i = 0; i < S.length() - K;  ` `        ``i++) {  ` `        ``string a = S.substr(i, K);  ` ` `  `        ``// Increment the count of  ` `        ``// substrings in map  ` `        ``m[a]++;  ` `    ``}  ` ` `  `    ``// Iterate over all the substrings  ` `    ``// present in the map  ` `    ``for` `(``auto` `x : m) {  ` ` `  `        ``// Condition to check if the  ` `        ``// frequency of the substring  ` `        ``// present in the map  ` `        ``// is greater than 1  ` `        ``if` `(x.second > 1) {  ` `            ``cout << x.first << ``" - "` `                ``<< x.second << ``"\n"``;  ` `        ``}  ` `    ``}  ` `}  ` ` `  `// Driver Code  ` `int` `main()  ` `{  ` `    ``// Given Number in form of string  ` `    ``string str = ``"123412345123456"``;  ` ` `  `    ``// Given K  ` `    ``int` `K = 4;  ` ` `  `    ``// Function Call  ` `    ``print_Kdigit(str, K);  ` `}  `

## Java

 `// Java program for the above approach  ` `import` `java.util.*;  ` ` `  `class` `GFG{  ` ` `  `// Function to print all K digit  ` `// repeating numbers  ` `static` `void` `print_Kdigit(String S, ``int` `K)  ` `{  ` `     `  `    ``// Map to store the substrings  ` `    ``// with their frequencies  ` `    ``Map m = ``new` `HashMap<>();  ` ` `  `    ``// Iterate over every substring  ` `    ``// and store their frequencies  ` `    ``// in the map  ` `    ``for``(``int` `i = ``0``; i < S.length() - K; i++)  ` `    ``{  ` `        ``String a = S.substring(i, i + K);  ` ` `  `        ``// Increment the count of  ` `        ``// substrings in map  ` `        ``m.put(a, m.getOrDefault(a, ``0``) + ``1``);  ` `         `  `    ``}  ` ` `  `    ``// Iterate over all the substrings  ` `    ``// present in the map  ` `    ``for``(Map.Entry x : m.entrySet())  ` `    ``{  ` `         `  `        ``// Condition to check if the  ` `        ``// frequency of the substring  ` `        ``// present in the map  ` `        ``// is greater than 1  ` `        ``if` `(x.getValue() > ``1``)  ` `        ``{  ` `            ``System.out.println(x.getKey() + ``" - "` `+  ` `                            ``x.getValue());  ` `        ``}  ` `    ``}  ` `}  ` ` `  `// Driver code  ` `public` `static` `void` `main(String[] args)  ` `{  ` `     `  `    ``// Given Number in form of string  ` `    ``String str = ``"123412345123456"``;  ` `     `  `    ``// Given K  ` `    ``int` `K = ``4``;  ` `     `  `    ``// Function call  ` `    ``print_Kdigit(str, K);  ` `}  ` `}  ` ` `  `// This code is contributed by offbeat  `

## Python3

 `# Python3 program of the above approach  ` `def` `print_Kdigit(S, K):  ` `     `  `    ``# Dictionary to store the substrings  ` `    ``# with their frequencies  ` `    ``m ``=` `{}  ` ` `  `    ``# Iterate over every substring  ` `    ``# and store their frequencies  ` `    ``# in the dictionary  ` `    ``for` `i ``in` `range``(``len``(S) ``-` `K):  ` `        ``a ``=` `S[i:i ``+` `K]  ` `         `  `        ``# Initialize the count of  ` `        ``# substrings in dictionary with 0  ` `        ``m[a] ``=` `0` ` `  `    ``for` `i ``in` `range``(``len``(S) ``-` `K):  ` `        ``a ``=` `S[i:i ``+` `K]  ` `         `  `        ``# Increment the count of  ` `        ``# substrings in dictionary  ` `        ``m[a] ``+``=` `1` ` `  `    ``# Iterate over all the substrings  ` `    ``# present in the dictionary  ` `    ``for` `key, value ``in` `m.items():  ` `        ``if` `value > ``1``:  ` `            ``print``(key, ``"-"``, value)  ` ` `  `# Driver Code  ` `str` `=` `"123412345123456"` ` `  `# Given K  ` `K ``=` `4` ` `  `# Function Call  ` `print_Kdigit(``str``, K)  ` ` `  `# This code is contributed by Vishal Maurya  `

## C#

 `// C# program for the above approach ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG{ ` ` `  `// Function to print all K digit ` `// repeating numbers ` `static` `void` `print_Kdigit(``string` `S, ``int` `K) ` `{ ` `     `  `    ``// Map to store the substrings ` `    ``// with their frequencies ` `    ``Dictionary<``string``,  ` `               ``int``> m = ``new` `Dictionary<``string``, ` `                                       ``int``>(); ` ` `  `    ``// Iterate over every substring ` `    ``// and store their frequencies ` `    ``// in the map ` `    ``for``(``int` `i = 0; i < S.Length - K; i++)  ` `    ``{ ` `        ``string` `a = S.Substring(i, K); ` ` `  `        ``// Increment the count of ` `        ``// substrings in map ` `        ``m[a] = m.GetValueOrDefault(a, 0) + 1; ` `    ``} ` ` `  `    ``// Iterate over all the substrings ` `    ``// present in the map ` `    ``foreach``(KeyValuePair<``string``, ``int``> x ``in` `m) ` `    ``{ ` `         `  `        ``// Condition to check if the ` `        ``// frequency of the substring ` `        ``// present in the map ` `        ``// is greater than 1 ` `        ``if` `(x.Value > 1) ` `        ``{ ` `            ``Console.Write(x.Key + ``" - "` `+  ` `                          ``x.Value + ``"\n"``);  ` `        ``} ` `    ``} ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(``string``[] args) ` `{ ` `     `  `    ``// Given number in form of string ` `    ``string` `str = ``"123412345123456"``; ` `     `  `    ``// Given K ` `    ``int` `K = 4; ` `     `  `    ``// Function call ` `    ``print_Kdigit(str, K); ` `} ` `} ` ` `  `// This code is contributed by rutvik_56 `

Output:

```1234 - 3
2345 - 2
```

Time Complexity: O(N*K)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : vishu2908, offbeat, rutvik_56