当前位置: 首页> 财经> 产业 > 网页设计学到了什么_软件开发工程师就业企业_市场seo是什么_济南seo网站优化公司

网页设计学到了什么_软件开发工程师就业企业_市场seo是什么_济南seo网站优化公司

时间:2025/7/14 16:52:52来源:https://blog.csdn.net/qq_63707333/article/details/144928583 浏览次数:1次
网页设计学到了什么_软件开发工程师就业企业_市场seo是什么_济南seo网站优化公司

链接:763. 划分字母区间 - 力扣(LeetCode)

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

示例 1:

输入:s = "ababcbacadefegdehijhklij"
输出:[9,7,8]
解释:
划分结果为 "ababcbaca"、"defegde"、"hijhklij" 。
每个字母最多出现在一个片段中。
像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。 

示例 2:

输入:s = "eccbbbbdec"
输出:[10]

提示:

  • 1 <= s.length <= 500
  • s 仅由小写英文字母组成

题意

        每个相同的字母只能出现在同一个区间中,尽可能划分尽多的区间。

思路

        只要保证每个相同字母头尾相连就是一个划分区间片段,那么我们可以提前记录一下每个字母最后一次出现的问题,然后我们只需要枚举一下每个字母的起始位置,然后起始位置和最后出现的位置那么就是一个最长的区间。在枚举的过程中只要维护一下每个字母的最长的右端点即可

代码

class Solution {
public:vector<int> partitionLabels(string s) {int n = s.size();vector<int> res;unordered_map<char,int> mp;for(int i=0;i<n;i++){mp[s[i]]=i;}int l=0,r=0;for(int i=0;i<n;i++){if(r==0){l=i;  r=mp[s[i]];}else{  //维护最大右端点位置r = max(mp[s[i]],r);}if(i>=r){   //该区间是满足题意的一个片段res.push_back(r-l+1);l=0;r=0;}}return res;}
};

关键字:网页设计学到了什么_软件开发工程师就业企业_市场seo是什么_济南seo网站优化公司

版权声明:

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

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

责任编辑: