【力扣刷题】LeetCode763-划分字母区间
文章目录
- 1. LeetCode763_划分字母区间
1. LeetCode763_划分字母区间
题目链接🔗
- 🐧解题思路: 区间合并
题目中这句话很关键“我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。” 你这句话你可以理解为 把相同字母在一个区间,其实就是合并区间,把相同字母的区间合并在一起。
①首先记录字符串每个字母最后出现的位置;
②设置两个指针表示左右区间,当前区间包含相同字母都在这个区间里面;
class Solution {
public:vector<int> partitionLabels(string s) {int n = s.size();int last[26]; // 记录每个字母最后出现的位置for (int i = 0; i < n; i++) {int num = s[i] - 'a';last[num] = i;}vector<int> ans;int begin = 0, end = 0;for (int i = 0; i < n; i++) {end = max(end, last[s[i] - 'a']);if (i == end) { // 表示 [begin, end] 这段区间已经包含 下标 <= i// 所有相同字符ans.push_back(end - begin + 1);begin = end + 1;}}return ans;}
};