Simply just iterate through the string s and keep track of the frequency of each letter:
vector<int> frequency(26, 0);
for (char& c : s) {
++frequency[c - 'a'];
}
Then, iterate through the frequency array and keep track of the maximum count for a vowel and maximum count for a consonant:
int maxVowel = 0;
int maxConsonant = 0;
for (int i = 0; i < 26; ++i) {
if (i == 0 || i == 4 || i == 'i'-'a' || i == 'o'-'a' || i == 'u'-'a') {
maxVowel = max(maxVowel, frequency[i]);
} else {
maxConsonant = max(maxConsonant, frequency[i]);
}
}
return maxVowel + maxConsonant;
code
class Solution {
public:
int maxFreqSum(string s) {
vector<int> frequency(26, 0);
for (char& c : s) {
++frequency[c - 'a'];
}
int maxVowel = 0;
int maxConsonant = 0;
for (int i = 0; i < 26; ++i) {
if (i == 0 || i == 4 || i == 'i'-'a' || i == 'o'-'a' || i == 'u'-'a') {
maxVowel = max(maxVowel, frequency[i]);
} else {
maxConsonant = max(maxConsonant, frequency[i]);
}
}
return maxVowel + maxConsonant;
}
};
complexity
- Time:
O(n)wherenis the number of letters insides- Space:
O(1)
time taken
- 4 minutes and 8 seconds