Leetcode刷题-763-partition labels-贪心

本文介绍了一种使用贪心算法解决字符串划分问题的方法。该方法通过两次遍历字符串来确定每个子串的最大长度,使得每个字符只出现在一个子串中。文章详细解释了如何记录每个字符最后一次出现的位置,并利用这些信息来划分字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

partition labels

题目:A string S of lowercase English letters is given. We want to partition this string into as many parts as possible so that each letter appears in at most one part, and return a list of integers representing the size of these parts.
链接:点这里

贪心算法

思路 首先遍历s,得到每个字母最靠后出现的位置下标index
然后从左开始再次遍历,由最左边的字母得到一个区间,遍历区间内的字母最后出现的位置如果不在该区间则扩大区间,否则继续遍历。

首先是记录最后出现的位置的技巧

 int map[26];
       int len = S.size();
       for(int i=0;i<len;i++)
       {
           map[s[i]-'a']=i;
       } 

第二次遍历找区间
官方题解:简单美观,但需要设置多个变量记录位置,我暂时还没能往这方面想
只能记录到end的位置,再最后减。
此处记录动态大小数组vector,可以直接得到没固定大小的数组输出,很方便。

// vector声明
vector<int>vname ;
//vector大小获取
int len = vector.size();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值