示例代码
class Solution {
public:
vector<vector<int>> countLables(string& s){
vector<vector<int>> hash(26,vector<int>(2,INT_MIN));
vector<vector<int>> hashFilter;
for(int i=0;i<s.length();i++){
if(hash[s[i]-'a'][0]==INT_MIN){
hash[s[i]-'a'][0]=i;
}
hash[s[i]-'a'][1]=i;
}
for(int i=0;i<26;i++){
if(hash[i][0]!=INT_MIN){
hashFilter.push_back(hash[i]);
}
}
return hashFilter;
}
vector<int> partitionLabels(string s) {
vector<int> res;
vector<vector<int>> hash=countLables(s);
sort(hash.begin(),hash.end(),[](vector<int> a,vector<int> b){
return a[0]<b[0];
});
int leftBoard=hash[0][0],rightBoard=hash[0][1];
for(int i=1;i<hash.size();i++){
if(hash[i][0]>rightBoard){
res.push_back(rightBoard-leftBoard+1);
leftBoard=hash[i][0];
}
rightBoard=max(rightBoard,hash[i][1]);
}
res.push_back(rightBoard-leftBoard+1);
return res;
}
};
效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/729747bf2734463db8dd2315ef977786.png)