划分字母区间

划分字母区间

思路:

我觉得这道题最关键的一个思路就是,对于没一个字母,你一定要找到他的最后一次出现的位置,每一个片段必须要比这个大,然后该字符到这个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;
    }
};
相关推荐
南宫萧幕13 小时前
HEV能量管理建模实战:从零搭建 Simulink 物理环境到 Python(DQN) 强化学习联合仿真调通
开发语言·python·算法·matlab·汽车·控制
x_yeyue13 小时前
2026第十七届蓝桥杯c++B组省赛题解
笔记·算法·蓝桥杯·acm·题解
handler0113 小时前
【C++ 算法竞赛基础】数论篇:核心公式、经典例题与高频模板
开发语言·c++·算法·蓝桥杯·数论·最大公约数·最小公倍数
z2005093014 小时前
今日算法(二叉树)
数据结构·c++·算法
南境十里·墨染春水14 小时前
八大排序算法 - 基数排序
算法·排序算法
老四啊laosi14 小时前
[滑动窗口] 12. 将 x 减到 0 的最小操作数
算法·leetcode·将 x 减到 0 的最小操作数
一条大祥脚14 小时前
Codeforces Round 1098 (Div. 2)
算法·深度优先
时空自由民.14 小时前
平衡车PID控制系统(豆包版本)
算法
sno_guo14 小时前
直播抠图技术100谈之25---调色中曲线是最优解
人工智能·算法·机器学习·直播·内容运营·obs抠图·直播技术
故事和你9114 小时前
洛谷-【图论2-2】最短路1
开发语言·数据结构·c++·算法·动态规划·图论