📌  相关文章
📜  找到前 K 个字母具有相同频率的最长子序列的长度

📅  最后修改于: 2021-09-07 02:16:27             🧑  作者: Mango

给定带有大写字符和整数K 的字符串str ,任务是找到最长子序列的长度,使得第一个K字母表的频率相同。

例子:

方法:
遍历字符串并找到前K 个字母中出现频率最低的一个。一旦找到, (该元素的频率)* K给出了所需的结果。
下面是上述方法的实现:

C++
// C++ program to find the longest
// subsequence with first K
// alphabets having same frequency
 
#include 
using namespace std;
 
// Function to return the
// length of the longest
// subsequence with first K
// alphabets having same frequency
int lengthOfSubsequence(string str,
                            int K)
{
    // Map to store frequency
    // of all characters in
    // the string
    map mp;
    for (char ch : str) {
        mp[ch]++;
    }
     
    // Variable to store the
    // frequency of the least
    // frequent of first K
    // alphabets
    int minimum = mp['A'];
    for (int i = 1; i < K; i++) {
        minimum = min(minimum,
                    mp[(char)(i + 'A')]);
    }
     
    return minimum * K;
}
 
int main()
{
    string str = "ACAABCCAB";
    int K = 3;
     
    cout << lengthOfSubsequence(str, K);
    return 0;
}


Java
// Java program to find the longest
// subsequence with first K alphabets
// having same frequency
import java.util.*;
 
class GFG{
 
// Function to return the
// length of the longest
// subsequence with first K
// alphabets having same frequency
static int lengthOfSubsequence(String str,
                            int K)
{
     
    // Map to store frequency
    // of all characters in
    // the string
    Map mp = new HashMap<>();
    for(char ch : str.toCharArray())
    {
        mp.put(ch, mp.getOrDefault(ch, 0) + 1);
    }
 
    // Variable to store the
    // frequency of the least
    // frequent of first K
    // alphabets
    int minimum = mp.get('A');
    for(int i = 1; i < K; i++)
    {
        minimum = Math.min(minimum,
                        mp.get((char)(i + 'A')));
    }
    return minimum * K;
}
 
// Driver code
public static void main(String[] args)
{
    String str = "ACAABCCAB";
    int K = 3;
     
    System.out.println(lengthOfSubsequence(str, K));
}
}
 
// This code is contributed by offbeat


Python3
# Python3 program to find the longest
# subsequence with first K alphabets
# having same frequency
from collections import defaultdict
 
# Function to return the
# length of the longest
# subsequence with first K
# alphabets having same frequency
def lengthOfSubsequence(st, K):
 
    # Map to store frequency
    # of all characters in
    # the string
    mp = defaultdict(int)
    for ch in st:
        mp[ch] += 1
     
    # Variable to store the
    # frequency of the least
    # frequent of first K
    # alphabets
    minimum = mp['A']
     
    for i in range(1, K):
        minimum = min(minimum,
                    mp[chr(i + ord('A'))])
     
    return (minimum * K)
 
# Driver code
if __name__ == "__main__":
     
    st = "ACAABCCAB"
    K = 3
     
    print(lengthOfSubsequence(st, K))
 
# This code is contributed by chitranayal


C#
// C# program to find the longest
// subsequence with first K alphabets
// having same frequency
using System;
using System.Collections.Generic;
 
class GFG{
 
// Function to return the
// length of the longest
// subsequence with first K
// alphabets having same frequency
static int lengthOfSubsequence(string str,
                               int K)
{
     
    // Store frequency
    // of all characters in
    // the string
    Dictionary mp = new Dictionary();
     
    foreach(char ch in str.ToCharArray())
    {
        mp[ch] = mp.GetValueOrDefault(ch, 0) + 1;
    }
 
    // Variable to store the frequency
    // of the least frequent of first K
    // alphabets
    int minimum = mp['A'];
    for(int i = 1; i < K; i++)
    {
        minimum = Math.Min(minimum,
                           mp[(char)(i + 'A')]);
    }
    return minimum * K;
}
 
// Driver code
public static void Main(string[] args)
{
    string str = "ACAABCCAB";
    int K = 3;
     
    Console.Write(lengthOfSubsequence(str, K));
}
}
 
// This code is contributed by rutvik_56


Javascript


输出:
6

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live