📌  相关文章
📜  以非常大的数字打印所有 3 位重复数字

📅  最后修改于: 2022-05-13 01:57:06.799000             🧑  作者: Mango

以非常大的数字打印所有 3 位重复数字

给定一个非常大的数字,打印所有 3 位重复数字及其频率。如果 3 位数字出现不止一次,请打印该数字及其频率。
例子:

Input: 123412345123456
Output: 123 - 3 times
         234 - 3 times
         345 - 2 times 

Input: 43243243
Output: 432 - 2 times
        324 - 2 times
        243 - 2 times

做法:由于数字很大,所以存储在一个字符串中。最初,第一个三位数字将是左侧的前三个字符。从字符串字符串执行 %100 以删除第一个字符并在末尾附加第 i索引号以获得新数字。增加哈希图中数字的频率。最后,当所有 3 位数字都生成时,打印所有频率大于 1 的数字。
下面是上述思想的实现:

C++
// CPP program to print 3 digit repeating numbers
#include 
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  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 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 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 hm = new Dictionary();
 
        // 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 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


输出:
123 - 3 times
234 - 3 times
345 - 2 times