Максимальная частота повторения символов в данной строке

Опубликовано: 1 Декабря, 2021

Для данной строки S задача состоит в том, чтобы найти счетчик максимальной частоты повторения символов в данной строке S.

Примеры :

Input: S = “geeksgeeks”
Output: Frequency 2 is repeated 3 times
Explanation:
Frequency of characters in the given string –
{“g”: 2, “e”: 4, “k”: 2, “s”: 2}
The frequency 2 is repeated thrice for the characters “g”, “k”, “s”.

Input: S = “abcabcdedee”
Output: Frequency 2 is repeated 4 times.
Explanation:
Frequency of characters in the given string –
{“a”: 2, “b”: 2, “c”: 2, “d”: 2, “e”: 3}
The frequency 2 is repeated four times for the characters “a”, “b”, “c”, “d”.

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Эффективный подход:

  • Идея состоит в том, чтобы сначала сохранить частоту символов строки в массиве размером 26. Поскольку все символы строк относятся к 26 строчным английским алфавитам, мы можем сохранить частоту символов в массиве размером 26.
  • Создайте хэш-карту, чтобы сохранить количество частот символов и вернуть частоту, которая встречается максимальное время.

Ниже представлена реализация описанного выше подхода:

C ++

// C++ implementation to find the
// maximum repeated frequency of
// characters in the given string
#include <bits/stdc++.h>
using namespace std;
// Function to find the maximum
// repeated frequency of the
// characters in the given string
void findMaxFrequency(string s)
{
// Hash-Array to store the
// frequency of characters
int arr[26] = { 0 };
// Loop to find the frequency
// of the characters
for ( int i = 0; i < s.length(); i++)
arr[s[i] - 'a' ]++;
// Hash map to store the occurrence
// of frequencies of characters
unordered_map< int , int > hash;
for ( int i = 0; i < 26; i++)
if (arr[i] != 0)
hash[arr[i]]++;
// Loop to find the maximum
// Repeated frequency from hash-map
int max_count = 0, res = -1;
for ( auto i : hash) {
if (max_count < i.second) {
res = i.first;
max_count = i.second;
}
}
cout << "Frequency " << res << " is repeated "
<< max_count<< " times" ;
}
// Driver Code
int main()
{
string s = "geeksgeeks" ;
// Function Call
findMaxFrequency(s);
return 0;
}

Ява

// Java implementation to find the
// maximum repeated frequency of
// characters in the given String
import java.util.*;
class GFG{
// Function to find the maximum
// repeated frequency of the
// characters in the given String
static void findMaxFrequency(String s)
{
// Hash-Array to store the
// frequency of characters
int arr[] = new int [ 26 ];
// Loop to find the frequency
// of the characters
for ( int i = 0 ; i < s.length(); i++)
arr[s.charAt(i) - 'a' ]++;
// Hash map to store the occurrence
// of frequencies of characters
HashMap<Integer,Integer> hash = new HashMap<Integer,Integer>();
for ( int i = 0 ; i < 26 ; i++)
if (arr[i] != 0 ) {
if (hash.containsKey(arr[i])){
hash.put(arr[i], hash.get(arr[i])+ 1 );
}
else {
hash.put(arr[i], 1 );
}
}
// Loop to find the maximum
// Repeated frequency from hash-map
int max_count = 0 , res = - 1 ;
for (Map.Entry<Integer,Integer> i : hash.entrySet()){
if (max_count < i.getValue()) {
res = i.getKey();
max_count = i.getValue();
}
}
System.out.println( "Frequency " + res+ " is repeated "
+ max_count+ " times" );
}
// Driver Code
public static void main(String[] args)
{
String s = "geeksgeeks" ;
// Function Call
findMaxFrequency(s);
}
}
// This code is contributed by sapnasingh4991

Python3

# Python3 implementation to find the
# maximum repeated frequency of
# characters in the given string
# Function to find the maximum
# repeated frequency of the
# characters in the given string
def findMaxFrequency(s):
# Hash-Array to store the
# frequency of characters
arr = [ 0 ] * 26
# Loop to find the frequency
# of the characters
for i in range ( len (s)):
arr[ ord (s[i]) - ord ( 'a' )] + = 1
# Hash map to store the occurrence
# of frequencies of characters
hash = {}
for i in range ( 26 ):
if (arr[i] ! = 0 ):
if arr[i] not in hash :
hash [arr[i]] = 0
hash [arr[i]] + = 1
# Loop to find the maximum
# Repeated frequency from hash-map
max_count = 0
res = - 1
for i in hash :
if (max_count < hash [i]):
res = i
max_count = hash [i]
print ( "Frequency" , res, "is repeated" , max_count, "times" )
# Driver Code
s = "geeksgeeks"
# Function Call
findMaxFrequency(s)
# This code is contributed by shubhamsingh10

C #

// C# implementation to find the
// maximum repeated frequency of
// characters in the given String
using System;
using System.Collections.Generic;
class GFG{
// Function to find the maximum
// repeated frequency of the
// characters in the given String
static void findMaxFrequency(String s)
{
// Hash-Array to store the
// frequency of characters
int []arr = new int [26];
// Loop to find the frequency
// of the characters
for ( int i = 0; i < s.Length; i++)
arr[s[i] - 'a' ]++;
// Hash map to store the occurrence
// of frequencies of characters
Dictionary< int , int > hash = new Dictionary< int , int >();
for ( int i = 0; i < 26; i++)
if (arr[i] != 0) {
if (hash.ContainsKey(arr[i])){
hash[arr[i]] = hash[arr[i]]+1;
}
else {
hash.Add(arr[i], 1);
}
}
// Loop to find the maximum
// Repeated frequency from hash-map
int max_count = 0, res = -1;
foreach ( KeyValuePair< int , int > i in hash){
if (max_count < i.Value) {
res = i.Key;
max_count = i.Value;
}
}
Console.WriteLine( "Frequency " + res+ " is repeated "
+ max_count+ " times" );
}
// Driver Code
public static void Main(String[] args)
{
String s = "geeksgeeks" ;
// Function Call
findMaxFrequency(s);
}
}
// This code is contributed by 29AjayKumar
Выход:
Частота 2 повторяется 3 раза

Анализ производительности:

  • Сложность времени: O (N)
  • Вспомогательное пространство: O (N)

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.