思想:贪心。让第一个片段尽量短。
类似于:跳跃游戏,https://blog.csdn.net/zhangjiaji111/article/details/120659495 遍历的过程中不断更新最远。
class Solution {
public:
vector<int> partitionLabels(string s) {
int n = s.size();
char last[26];
vector<int> ans;
for (int i = 0; i < n; ++i) last[s[i] - 'a'] = i;
int pos = 0, maxLen = last[s[0] - 'a'];
for (int i = 0; i < n; ++i) {
maxLen = max(maxLen, last[s[i] - 'a']);
if (maxLen == i) {
ans.push_back(i - pos + 1);
pos = i + 1;
}
}
return ans;
}
};