Medium
Maximum Number of Equal Length Runs — C++
Full explanation · Time O(n) · Space O(sqrt(n))
// Time: O(n)
// Space: O(sqrt(n))
// freq table
class Solution {
public:
int maxSameLengthRuns(string s) {
unordered_map<int, int> cnt;
for (int i = 0, l = 0; i < size(s); ++i) {
++l;
if (i + 1 == size(s) || s[i + 1] != s[i]) {
++cnt[l];
l = 0;
}
}
return max_element(cbegin(cnt), cend(cnt), [](const auto& a, const auto& b) {
return a.second < b.second;
})->second;
}
};
// Time: O(n)
// Space: O(n)
// freq table
class Solution2 {
public:
int maxSameLengthRuns(string s) {
vector<int> cnt(size(s) + 1);
for (int i = 0, l = 0; i < size(s); ++i) {
++l;
if (i + 1 == size(s) || s[i + 1] != s[i]) {
++cnt[l];
l = 0;
}
}
return ranges::max(cnt);
}
};