“蔚来杯“2022牛客暑期多校训练营(加赛) G.Good red-string

该博客讨论了一种利用栈解决字符串匹配问题的方法,特别是针对由'r', 'e', 'd'和'?'组成的字符串,目标是形成良好的红色序列。文章通过维护前缀和后缀的条件,用栈来辅助修改字符,最终判断是否能构造出满足条件的字符串。代码示例展示了如何实现这一过程。

原题链接

链接

题目大意

定义由若干不相交的 r e d red red 序列构成的字符串为好的 r e d red red 字符串。
e x a m p l e : example: example
r e r d e d rerded rerded 是好的;
r e d r d e redrde redrde 不是好的。
给定由’r’,‘e’,‘d’,?‘构成的字符串,’?'能任意替换成任何字符,求能否使得字符串为好的 r e d red red 字符串。

题解

这题看着很像由三个分支的括号匹配,所以我们同样用栈来解决,
对于一个已经优秀的字符串,在任何位置上,已经出现的’r’总比已经出现的’e’次数多,‘e’总比’d’多,而未出现的恰好相反 ∣ r ∣ ≤ ∣ e ∣ ≤ ∣ d ∣ |r| \le |e| \le |d| red
考虑用前后缀记录当前的位置是否符合要求,
对于前缀我们维护 ∣ d ∣ ≤ ∣ e ∣ |d| \leq |e| de
对于前缀我们维护

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值