披着皮的区间合并,没什么可说的;
直接记录开始和结束区间排序即可;
具体代码:class Solution {
public:
vector partitionLabels(string s) {
int cnt=0;
vector> dic(26,{600,600});
vector> newgap;
vectorret;
for(int i=0;i
int index=s[i]-'a';
if(dic[index][0]==600){
dic[index][0]=i;
cnt++;
}
dic[index][1]=i;
}
sort(dic.begin(),dic.end(),[](vector& v1,vector& v2){
return v1[0]
if(dic[i][0]>end){
newgap.push_back({start,end});
start=dic[i][0];
end=dic[i][1];
}else{
end=max(end,dic[i][1]);
}
}
newgap.push_back({start,end});
for(auto v:newgap){
ret.push_back(v[1]-v[0]+1);
}
return ret;
}
};



