代码随想录:划分字母区间

记录当前遇到过所有字母的最远 最晚出现位置,当到达这个位置时,说明之前的所有字母都满足条件了,进行切分

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;
    }
};
posted @ 2025-02-06 16:27  huigugu  阅读(3)  评论(0)    收藏  举报