Source
Codeforces Round #372 (Div. 2)
My Solution
two pointers、队列(queue)
用 queue que;维护一个除了 '?'以外所有字符最多在该队列中出现一次的队列, 当que里的合法元素达到 26 个是就是 nice substring 了。
在这过程中 用 map<char, int> ch 维护队列中每个字符出现的次数, 且用 ind 维护队列的首元素的在s中的下标。
得到要求的que以后, 扫一遍map, 把没有出现过的大写字母丢到 队列 ans里去,
然后 输出 s[ 0 ~ ind-1], 输出 nice substring,输出s[ind + 26 ~ sz -1]。
最开始的时候, 脑残的只输出了处理以后的 nice substring。Wrong answer on pretest 6
之后想了很久才发现 (┬_┬), 其中又有个小注意点, 即非nice substring 部分的 '?' 在输出的时候也要 用字母代替掉, 比如全用'A'。
复杂度 O(n)
#include
#include
#include
#include
#include
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
共有 0 条评论