🔗 leetcode.cn/problems/pa…
题目
- s 字符串划分为尽可能多的片段,同一字母最多出现在一个片段
- 将所有划分结果按顺序连接,得到的字符串仍然是 s
- 返回每个片段的字符串的长度列表
思路
- 记录每个字符出现的最大 index
- 若当前的 index 是前序字符串的最大 index,则记录前序字符串的长度,并重置计数
代码
class Solution {
public:
vector<int> partitionLabels(string s) {
map<int, int> mp
for (int i = 0
mp[s[i]] = i
}
int curr_max = mp[s[0]]
vector<int> ans
int count = 0
for (int i = 0
//printf("%d %c curr_max %d mp %d count %d \n", i, s[i], curr_max, mp[s[i]], count)
curr_max = max(curr_max, mp[s[i]])
count++
if (i == curr_max) {
ans.push_back(count)
count = 0
}
}
return ans
}
}