给定一个字符串,仅由'r'、'e'、'd'和'?'四种字符组成。你需要把所有的'?'字符变成'r'、'e'、'd'三种字符中的任意一种,使得任意长度为3的连续子串中,'r'、'e'、'd'三种字母的出现次数相同。你能帮帮她吗? 共有 q 次询问。
第一行输入一个正整数 q ,代表询问次数。 接下来的 q 行,每行输入一个仅由'r'、'e'、'd'和'?'四种字符组成的字符串,代表一次询问。 所有的字符串总长度不超过200000。
输出 q 行,每行代表一次询问的答案。 如果可以完成修改,请输出一个合法的字符串。有多解时输出任意即可。 否则输出一个字符串"No"。
3 e???d?? r??e ??
edredre No rd
考点:构造
数据规模 n ≤ 200000 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:构造
本题切入点
要求任意长度 3 的窗口内 r/e/d 各出现一次,等价于字符串以 3 为周期循环;枚举 3 种起始排列分别试填 ?,全部可行即输出合法串。
不要求唯一答案,只需按规则造出一个合法解,常从边界/特殊情形入手。
思路框架(构造 通法 · 非本题专属)
实现要点:构造题不判最优,只判合法性,因此验证环节不能省。
复杂度:时间 O(n) | 空间 O(n)
该范式的通法易错点
对照本题
样例 1
3 / e???d?? / r??e / ??edredre / No / rd解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年OPPO秋招研发岗笔试。