class Solution {
public:
vector
<int> partitionLabels(string S
) {
int n
= S
.size();
vector
<int> num
[26];
for (int i
= 0; i
< n
; i
++) {
num
[S
[i
] - 'a'].emplace_back(i
);
}
vector
<pair
<int, int>>s
;
for (int i
= 0; i
< 26; i
++)
if (num
[i
].size()) s
.emplace_back(pair
<int, int>{ num
[i
].front(), num
[i
].back() });
sort(s
.begin(), s
.end());
vector
<pair
<int, int>>ans
;
for (auto x
: s
) {
if (ans
.empty()) ans
.emplace_back(x
);
else if (x
.first
< ans
.back().second
)
ans
.back().second
= max(ans
.back().second
, x
.second
);
else ans
.emplace_back(x
);
}
vector
<int>anst
;
for (auto x
: ans
)
anst
.emplace_back(x
.second
- x
.first
+ 1);
return anst
;
}
};
转载请注明原文地址: https://lol.8miu.com/read-34770.html