划分字母区间

划分字母区间

思路:

我觉得这道题最关键的一个思路就是,对于没一个字母,你一定要找到他的最后一次出现的位置,每一个片段必须要比这个大,然后该字符到这个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;
    }
};
相关推荐
Jared_devin5 小时前
单头、多头 Self-Attention可视化
人工智能·pytorch·深度学习·算法·机器学习·pycharm
wuyk5555 小时前
18.Kruskal 算法:用最短的边连成一张网
开发语言·算法·图论
pen-ai6 小时前
【优化方法】最小二乘:从误差平方到线性与非线性拟合
人工智能·算法·机器学习
Q26433650237 小时前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
不会就选b7 小时前
算法日常・每日刷题--贪心<11>
算法·leetcode·职场和发展
千里码aicood7 小时前
面向电商冷启动与数据稀疏性的协同过滤算法优化研究
大数据·算法·协同过滤
xxxiugou1237 小时前
双指针解题秘籍:从入门到精通
c语言·数据结构·c++·算法
能源革命7 小时前
TimesFM(Time Series Foundation Model)介绍
算法·能源
猎嘤一号7 小时前
学术训练(一)文献检索与阅读
人工智能·算法·机器学习·科研入门
Doubbbbbbble云7 小时前
多路归并算法在外部排序中的实现与优化
算法