代码随想录:划分字母区间
记录当前遇到过所有字母的最远 最晚出现位置,当到达这个位置时,说明之前的所有字母都满足条件了,进行切分
class Solution {
public:
vector<int> partitionLabels(string s) {
vector<int> res;
vector<int> hash(26,0);
for(int i = 0;i<s.size();i++){
hash[s[i]-'a'] = i;
}
int len = hash[s[0]-'a'];
int last = 0;
for(int i = 0;i<s.size();i++){
len = max(hash[s[i]-'a'],len);
if(len==i){
res.push_back(i-last+1);
last=i+1;
}
}
return res;
}
};

浙公网安备 33010602011771号