LeetCode763. 划分字母区间

it2026-02-28  3

//763. 划分字母区间 //简单的合并区间 class Solution { public: vector<int> partitionLabels(string S) { int n = S.size(); vector<int> num[26]; for (int i = 0; i < n; i++) { num[S[i] - 'a'].emplace_back(i); } vector<pair<int, int>>s; for (int i = 0; i < 26; i++) if (num[i].size()) s.emplace_back(pair<int, int>{ num[i].front(), num[i].back() }); sort(s.begin(), s.end()); vector<pair<int, int>>ans; for (auto x : s) { if (ans.empty()) ans.emplace_back(x); else if (x.first < ans.back().second) ans.back().second = max(ans.back().second, x.second); else ans.emplace_back(x); } vector<int>anst; for (auto x : ans) anst.emplace_back(x.second - x.first + 1); return anst; } };
最新回复(0)