1456
Code
class Solution {
public:
int maxVowels(std::string s, int k) {
std::unordered_set<char> vowels_set = {'a', 'e', 'i', 'o', 'u'};
int cur = 0;
for (int i = 0; i < k && i < s.size(); ++i) {
cur += (vowels_set.find(s[i]) != vowels_set.end() ? 1 : 0);
}
if (k > s.size())
return cur;
int max = cur;
for (int i = 1; i < s.size(); ++i) {
cur -= (vowels_set.find(s[i - 1]) != vowels_set.end() ? 1 : 0);
if (i + k - 1 < s.size())
cur += (vowels_set.find(s[i + k - 1]) != vowels_set.end() ? 1 : 0);
max = cur > max ? cur : max;
}
return max;
}
};
Result
Success
Runtime: 52 ms, faster than 17.85% of C++ online submissions for Maximum Number of Vowels in a Substring of Given Length.
Memory Usage: 10.2 MB, less than 44.34% of C++ online submissions for Maximum Number of Vowels in a Substring of Given Length.