Given the task is to find the maximum number of distinct lower case alphabets that are present between two upper case alphabets in the given string.
Let’s now understand what we have to do using an example −
str = “JKyubDoorG”
3
“yub” is present between the two upper case alphabets K and D which makes the count 3.
“oor” is also present between the two upper case alphabets D and G which makes the count 2 as ‘o’ is a repeating alphabet and we are looking for distinct alphabets.
Therefore, the output is 3.
str = “ABcefsTaRpaep”
4
In function Max() initialize int size = s.length() to store the length of the given string.
Loop from i = 0 till i<size and check if if (s[i] >= 'A' && s[i] <= 'Z'). If so then increment I and break;
Initialize int ans = 0 to store the final answer and another array cnt[26] = {0}.
Loop from i = 0 till i<size then check if (s[i] >= 'A' && s[i] <= 'Z') to check if the current alphabet is in upper case. If so then initialize int CurrMax = 0 to store the current maximum value.
Loop from i = 0 till i<26 and check if (cnt[i] > 0). If so, then increment CurrMax.
Outside the for loop, update ans by putting ans = max(ans, CurrMax); and reset the cnt[] array by using memset(cnt, 0, sizeof(cnt));
Close the above if() statement and check if (s[i] >= 'a' && s[i] <= 'z'). If so then increment cnt[s[i] - 'a'].
Close the for loop and return ans.
#include <bits/stdc++.h> using namespace std; int Max(string s){ int size = s.length(); // Ignore the lowercase alphabets in beginning for (int i = 0; i < size; i++){ if (s[i] >= 'A' && s[i] <= 'Z'){ i++; break; } } int ans = 0; int cnt[26] = { 0 }; for (int i = 0; i < size; i++) { // If alphabet is uppercase, if (s[i] >= 'A' && s[i] <= 'Z'){ //Counting all lower case //distinct alphabets int CurrMax = 0; for (int i = 0; i < 26; i++){ if (cnt[i] > 0) CurrMax++; } // Update ans ans = max(ans, CurrMax); // Reset count array memset(cnt, 0, sizeof(cnt)); } // If alphabet is lowercase if (s[i] >= 'a' && s[i] <= 'z') cnt[s[i] - 'a']++; } return ans; } // Driver function int main(){ string str = "JKyubDoorG"; cout << Max(str); return 0; }
3