📌  相关文章
📜  检查一个字符串的最大出现字符是否相同。在其他时间

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

检查一个字符串的最大出现字符是否相同。在其他时间

给定两个字符串,我们需要取第一个字符中出现次数最多的字符串,然后我们必须检查该特定字符在第二个字符串中出现的次数是否与在第一个字符串中出现的次数相同。
例子:

Input : s1 = "sssgeek", s2 = "geeksss"
Output : Yes
Max occurring character in s1 is
's'. It occurs same number of times
in s2.

Input :  geekyarticle
         gfggfggfg
Output : No

在第一个字符串中存储字符计数并找到最大计数。现在遍历第二个字符串并检查最大出现的字符是否出现相同的次数。
下面的程序来说明上述问题

C++
// C++ program to check the problem
#include 
using namespace std;
#define ll long long
#define ASCIISIZE 256
 
int match(string s1, string s2)
{
    // Create array to keep the count of individual
    // characters and initialize the array as 0
    int count[ASCIISIZE] = { 0 };
 
    // Construct character count array from the input
    // string.
    for (int i = 0; i < s1.length(); i++)
        count[s1[i]]++;
 
    // Count occurrences of maximum occurring character
    int mx_cnt = 0, mx_chr;
    for (int i = 0; i < ASCIISIZE; i++) {
        if (count[i] > mx_cnt) {
            mx_cnt = count[i];
            mx_chr = i;
        }
    }
 
    // look if that character is present, the same
    // number of times it is present in second string
    for (int i = 0; i < s2.length(); i++)
        if (mx_chr == s2[i])
            mx_cnt--;
     
    // check if sum is greater or equal to number
    // return 1
    if (mx_cnt == 0)
        return 1;
}
 
// Driver program to test the above function
int main()
{
    string s1 = "geekforgeeks", s2 = "geekisgeeky";
    if (match(s1, s2))
        cout << "Yes ";
    else
        cout << "No";
 
    return 0;
}


Java
// Java program to check the problem
class GFG
{
static int ASCIISIZE = 256;
static int match(String s1,    
                 String s2)
{
// Create array to keep the
// count of individual characters
// and initialize the array as 0
int count[] = new int[ASCIISIZE];
 
// Construct character count
// array from the input string.
char []s3 = s1.toCharArray();
for (int i = 0; i < s3.length; i++)
    count[s3[i]]++;
 
// Count occurrences of
// maximum occurring character
int mx_cnt = 0;
int mx_chr = 0;
for (int i = 0; i < ASCIISIZE; i++)
{
    if (count[i] > mx_cnt)
    {
        mx_cnt = count[i];
        mx_chr = i;
    }
}
 
// look if that character is
// present, the same number
// of times it is present in
// second string
char []s4 = s2.toCharArray();
for (int i = 0; i < s4.length; i++)
    if (mx_chr == s4[i])
        mx_cnt--;
 
// check if sum is greater or
// equal to number return 1
if (mx_cnt == 0)
    return 1;
else
    return 0;
}
 
// Driver Code
public static void main(String[] args)
{
    String s1 = "geekforgeeks",
           s2 = "geekisgeeky";
    int p = match(s1, s2);
    if (p == 1)
        System.out.println("Yes ");
    else
        System.out.println("No");
}
}
 
// This code is contributed
// by ChitraNayal


Python3
# Python3 program to
# check the problem
 
# define function for Check
# if max occurring character
# of one string appears same
# no. of times in other
def match(s1, s2) :
 
    # declare empty list
    count_list = []
 
    # iterate through each
    # character of the string
    for char in s1 :
         
        # find occurrence of
        # the character
        count = s1.count(char)
         
        # append tuple value
        # to the list
        count_list.append((count,char))
 
    # return tuple of max count
    max_occ = max(count_list)
 
    # store max count in mx_cnt
    mx_cnt = max_occ[0]
 
    # store max count
    # character in mx_chr
    mx_chr = max_occ[1]
 
    # look if max count character
    # is present in s1, the same
    # number of times it is present
    # in second string s2 or not
    # if present return True
    # otherwise False.
    if mx_cnt == s2.count(mx_chr) :
        return True
    else :
        return False
 
# Driver Code
if __name__ == "__main__" :
     
    s1 = "geeksforgeeks"
    s2 = "geekisgeeky"
 
    if match(s1,s2) :
        print("Yes")
    else :
        print("No")
         
# This code is contributed
# by Ankit Rai


C#
// C# program to check the problem
using System;
 
class GFG
{
static int ASCIISIZE = 256;
static int match(String s1,
                 String s2)
{
// Create array to keep the
// count of individual characters
// and initialize the array as 0
int []count = new int[ASCIISIZE];
 
// Construct character count                                    
// array from the input string.
for (int i = 0; i < s1.Length; i++)
    count[s1[i]]++;
 
// Count occurrences of
// maximum occurring character
int mx_cnt = 0;
int mx_chr = 0;
for (int i = 0; i < ASCIISIZE; i++)
{
    if (count[i] > mx_cnt)
    {
        mx_cnt = count[i];
        mx_chr = i;
    }
}
 
// look if that character is
// present, the same number
// of times it is present
// in second string
for (int i = 0; i < s2.Length; i++)
    if (mx_chr == s2[i])
        mx_cnt--;
 
// check if sum is greater
// or equal to number return 1
if (mx_cnt == 0)
    return 1;
else
    return 0;
}
 
// Driver Code
public static void Main()
{
    String s1 = "geekforgeeks",
           s2 = "geekisgeeky";
    int p = match(s1, s2);
    if (p == 1)
        Console.Write("Yes ");
    else
        Console.Write("No");
}
}
 
// This code is contributed
// by ChitraNayal


Javascript


输出:
Yes