- 题目描述
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现
在一个片段中。返回一个表示每个字符串片段的长度的列表。
- 题解
贪心策略
- 代码
class Solution {
public:
vector<int> partitionLabels(string S) {
int n=S.size();
if (!n) return {};
int last[26]={0};
for (int i=0;i<n;i++){
last[S[i]-'a']=i;
}
vector<int> res;
int end=-1,pre=-1;
for (int i=0;i<n;i++){
end=max(end,last[S[i]-'a']);
if (end==i){
res.push_back(end-pre);
pre=end;
}
}
return res;
}
};