LeetCode每日一题-划分字母区间

it2025-09-16  2

划分字母区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。

class Solution { public: vector<int> partitionLabels(string S) { //1、采用定长的数组存储每个元素的最大位置 int hash[26] = {0}; for(int i = 0; i < S.size(); i++) { hash[S[i]-'a'] = i; } //2、筛选 int end = 0; vector<int> vec; for(int i = 0; i < S.size();) { int tmp = i; end = max(hash[S[tmp]-'a'], end); while(tmp != end) { end = max(hash[S[tmp]-'a'], end); tmp++; } vec.push_back(end-i + 1); i = end + 1; } return vec; } };

贪心思想 + 双指针

最新回复(0)