Check if max occurring character of one string appears same no. of times in other
Given two strings, we need to take the character which has the maximum occurrence in the first string and then we have to check if that particular character is present in the second string the same number of times as it is present in the first string.
Examples:
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
Store counts of characters in first string and find the maximum count. Now traverse through the second string and check if the maximum occurring character occurs same number of times or not.
Below program to illustrate the above problem
C++
// C++ program to check the problem #include <bits/stdc++.h> 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 occurence 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 |
Yes
Recommended Posts:
- Longest subsequence where every character appears at-least k times
- Count substrings with each character occurring at most k times
- Remove characters from string that appears strictly less than K times
- Maximum occurring character in an input string | Set-2
- Return maximum occurring character in an input string
- Replace every character of string by character whose ASCII value is K times more than it
- Encrypt a string by repeating i-th character i times
- Print the string after the specified character has occurred given no. of times
- Decrypt a string encrypted by repeating i-th character i times
- Find the only element that appears b times
- Check if frequency of character in one string is a factor or multiple of frequency of same character in other string
- Count all elements in the array which appears at least K times after their first occurrence
- Maximum number of times str1 appears as a non-overlapping substring in str2
- Maximum occurring character in a linked list
- Check if both halves of the string have at least one different character
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.