以非常大的数字打印所有 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