链接:
描述,示例和提示:
代码:
class Solution {
public:
vector<int> partitionLabels(string s) {
int last[26];//统计每个字母出现的最后一个位置
for (int i = 0; i < s.size(); i++)
{
last[s[i] - 'a'] = i;
}
vector<int> ret;
int start = 0, end = 0;
for (int i = 0; i < s.size(); i++)
{
end = max(end, last[s[i] - 'a']);//进行比较,记录end的位置
if (i == end)
{
ret.push_back(end - start + 1);//当当前位置时这个字母出现的最后一个位置的时候,我们push_back
start = end + 1;
}
}
return ret;
}
};