划分字母区间

划分字母区间

思路:

我觉得这道题最关键的一个思路就是,对于没一个字母,你一定要找到他的最后一次出现的位置,每一个片段必须要比这个大,然后该字符到这个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;
    }
};
相关推荐
surtr17 分钟前
Round 1019(div2) CD
数据结构·c++·算法·贪心算法·stl
Hcoco_me15 分钟前
大模型面试题14:K-means聚类算法全解析(通用场景+深度拓展)
算法·kmeans·聚类
Jay200211128 分钟前
【机器学习】30 基于内容的过滤算法
人工智能·算法·机器学习
冰西瓜60031 分钟前
分治(二)算法设计与分析 国科大
数据结构·算法
小小晓.39 分钟前
Pinely Round 2 (Div. 1 + Div. 2)
c++·算法
清风拂山岗 明月照大江1 小时前
简单文件 IO 示例:使用系统调用读写文件
开发语言·c++·算法
Hcoco_me1 小时前
大模型面试题15:DBSCAN聚类算法:步骤、缺陷及改进方向
算法·数据挖掘·聚类
AI绘画哇哒哒1 小时前
AI 智能体长期记忆系统架构设计与落地实践
人工智能·学习·算法·ai·程序员·产品经理·转行
加藤不太惠1 小时前
【无标题】
java·数据结构·算法
金色旭光1 小时前
目标追踪算法+卡尔曼滤波原理+ByteTrack使用
算法