2026/4/29 18:53:26
网站建设
项目流程
做设计不进设计公司网站,wordpress后台地址打开空白,dw网页制作素材+教程,外语网站制作给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段#xff0c;同一字母最多出现在一个片段中。例如#xff0c;字符串 ababcc 能够被分为 [abab, cc]#xff0c;但类似 [aba, bcc] 或 [ab同一字母最多出现在一个片段中。例如字符串ababcc能够被分为[abab, cc]但类似[aba, bcc]或[ab, ab, cc]的划分是非法的。注意划分结果需要满足将所有划分结果按顺序连接得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。示例 1输入s ababcbacadefegdehijhklij输出[9,7,8]解释划分结果为 ababcbaca、defegde、hijhklij 。 每个字母最多出现在一个片段中。 像 ababcbacadefegde, hijhklij 这样的划分是错误的因为划分的片段数较少。示例 2输入s eccbbbbdec输出[10]提示1 s.length 500s仅由小写英文字母组成class Solution { public: vectorint partitionLabels(string s) { vectorvectorint nums(26, vectorint()); for(int i0; is.length(); i){ if(!nums[s[i] - a].size()){ nums[s[i] - a].push_back(i); nums[s[i] - a].push_back(i); } else{ nums[s[i] - a][1] i; } } nums.erase(remove_if(nums.begin(), nums.end(), [](vectorint row){return row.empty();}), nums.end()); sort(nums.begin(), nums.end(), [](vectorint a, vectorint b){ return a[0] b[0];}); vectorint res; int knums[0][1], prev 0; for(int i1; inums.size(); i){ if(k nums[i][0]){ int cur k 1 - prev; prev k 1; res.push_back(cur); } k max(nums[i][1], k); } res.push_back(k 1 - prev); return res; } };