https://leetcode.com/problems/partition-labels/
class Solution {
public:
vector<int> partitionLabels(string S) {
map<char, int> d;
for(int i=0; i<S.size(); i++){
d[S[i]] = i; //记录每个字符最右边出现的位置
}
int start = 0, end = 0;
vector<int> res;
for(int i=0; i<S.size(); i++){
end = max(end, d[S[i]]);
if(i==end){//表示当前的数字s[i]就是和这一段最右边吻合了
res.push_back(end-start+1);
start = end+1;
}
}
return res;
}
};