LeetCode 2982. 找出出现至少三次的最长特殊子字符串 II
原题链接
中等
作者:
我是java同学
,
2024-01-01 07:45:11
,
所有人可见
,
阅读 39
class Solution {
public:
int maximumLength(string s) {
//将相同字母的子串分组
vector<int> groups[26];
int cnt = 0, n = s.size();
for (int i = 0; i < n; i ++ ) {
cnt ++ ;
if (i == n || s[i] != s[i + 1]) {
groups[s[i] - 'a'].push_back(cnt);
cnt = 0;
}
}
int res = 0;
for (auto a: groups) {
if (a.empty()) continue;
sort(a.begin(), a.end(), greater<int>());
a.push_back(0);
a.push_back(0);
//第二种情况
if (a[0] == a[1]) res = max(res, a[0] - 1);
else res = max(res, a[1]);
//第一三种情况
res = max({res, a[0] - 2, a[2]});
}
if (res == 0) res = -1;
return res;
}
};