您的位置:首页 > 游戏 > 游戏 > 划分字母区间

划分字母区间

2024/12/23 12:38:02 来源:https://blog.csdn.net/weixin_66692283/article/details/141727080  浏览:    关键词:划分字母区间

划分字母区间

思路:

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

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

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

代码:

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;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com