划分字母区间

划分字母区间

思路:

我觉得这道题最关键的一个思路就是,对于没一个字母,你一定要找到他的最后一次出现的位置,每一个片段必须要比这个大,然后该字符到这个end中其他的字符,也都要找到最后一次出现的位置,这个片段一定也要比这个大,然后我们遍历到这个片段里最大的最后一次出现的位置时候,就可以记录片段长度了,这个长度是符合题目意思的。

第一个思路:记录每个字符的第一次出现位置和最后一次出现位置,之后这题就和 56 .合并区间 完全一样的做法。

第二个思路:记录每个字母的结束位置。

代码:

cpp 复制代码
class Solution {
public:
    vector<int> partitionLabels(string s) {
        vector<int> ans;
        unordered_map<char,int> m; //记录每个字符的的最后一次出现的位置
        for (int i = 0; i < s.size(); i ++) {
            m[s[i]] = i;
        }
        int start=0,end=0;//start用来维护每一段的起点,end用来维护每一段的终点
        for(int i=0;i<s.size();i++)
        {
            end=max(end,m[s[i]]);
            if(i==end)
            {
                ans.push_back(end-start+1);
                start=i+1;
            }
        }
        return ans;
    }
};
相关推荐
暖阳华笺15 分钟前
【高频考点】回溯(暴力搜索)
数据结构·c++·算法·回溯法
hunterkkk(c++)15 分钟前
学习dijkstra算法(c++)
c++·学习·算法
我命由我1234520 分钟前
Excel - Excel 覆盖模式与编辑模式
运维·学习·职场和发展·excel·求职招聘·职场发展·运维开发
lightqjx24 分钟前
【算法】数据结构_单调队列
数据结构·算法·单调队列
小四季豆32 分钟前
《数据结构与算法》-顺序表:算法落地的第一个线性结构
c语言·数据结构·算法
8Qi840 分钟前
LeetCode 96:不同的二叉搜索树(Unique Binary Search Trees)—— 题解 ✅
算法·leetcode·职场和发展·动态规划
1892280486141 分钟前
NV041固态MT29F16T08GSLCEM9-QBES:C
人工智能·算法·microsoft·缓存·性能优化
罗超驿1 小时前
15.LeetCode 30. 串联所有单词的子串(Java):滑动窗口+哈希表详解
算法·leetcode
Marianne Qiqi1 小时前
非hot100的力扣算法题
数据结构·算法·leetcode
CC数学建模1 小时前
2026第八届中青杯全国大学生数学建模竞赛C题:情绪维度耦合约束的脑电信号情绪识别 (1)完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模