Re: [闲聊] 每日leetcode

楼主: oin1104 (是oin的说)   2025-03-31 01:48:31
※ 引述 《Rushia (早瀬ユウカの体操服)》 之铭言:
:  
: https://leetcode.com/problems/partition-labels
: 763. Partition Labels
: 给你一个字母字串,可以把该字串切成n段子字串,任意字母只能出现在一段,且
: 尽量切成越多段越好,求出每段的长。
:  
: 思路:
: 类似前几天的区间问题,把每个字母第一次出现和最后一次出现的索引当成区间,
: 然后把交错的区间合并,到下个区间的时候把区间长记录起来就好。
:  
思路
一样
睡前发现好像最近传每日的频率有点低
还是传一下好了
晚安捏
```cpp
class Solution {
public:
vector<int> partitionLabels(string s)
{
int n = s.size();
vector<pair<int,int>> cha(26,pair<int,int>{-1,-1});
for(int i = 0 ; i < n ; i ++)
{
if(cha[s[i]-'a'].first == -1)
{
cha[s[i]-'a'].first = i;
cha[s[i]-'a'].second = i;
}
else
{
cha[s[i]-'a'].second = i;
}
}
sort(cha.begin(),cha.end());
vector<int> res;
int p = 0;
while(p < 26)
{
int l = cha[p].first;
int r = cha[p].second;
if(l == -1 && r == -1)
{
p++;
continue;
}
int np = p+1;
while(np < 26 && r > cha[np].first)
{
r = max(r,cha[np].second);
np++;
}
res.push_back(r-l+1);
p = np;
}
return res;
}
};
```
作者: ttucse ((((>( ̄▽ ̄)<))))   2025-03-31 01:50:00
晚安。
楼主: oin1104 (是oin的说)   2025-03-31 01:51:00
晚安

Links booklink

Contact Us: admin [ a t ] ucptt.com