本文最后更新于607 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html
1.本题思路很巧妙,通过遍历将每一个字母在数组中存在的最后位置储存在哈希表中,然后通过遍历数组中的每一个字母,直到找到遍历的每一个字母的最大的那个最后的位置(最大的哈希数组的下标)。
CPP
class Solution {
public:
vector<int> partitionLabels(string s) {
vector<int> res;
int hash[27] = {0};
int left = 0, right = 0;
for(int i = 0; i < s.size(); i++){
hash[s[i] - 'a'] = i;
}
for(int i = 0; i < s.size(); i++){
right = max(right,hash[s[i] - 'a']);
if(i == right){
res.push_back(right - left + 1);
left = i + 1;
}
}
return res;
}
};