题意:给定只含大小写字母的字符串 s(下标从 1 开始),维护计数器 x=1。按 i=1..n 顺序进行:
i+x ≤ n 且 s[i+x] 为大写字母,则把 s[i+x] 改成小写,并令 x+=1;同时若 s[i] 为小写则把 s[i] 改成大写。做法:模拟 / 双指针
用 0 下标实现更方便。遍历位置 i,动态维护 x,用另一个位置 j=i+x(相当于第二个指针)。若 j 在范围内且 s[j] 是大写,则按规则修改 s[j]、提升 x,并把 s[i] 在需要时改成大写。整个过程只前进一次,所有操作都可在原串上完成。
给定一个长度为 n 的序列,每个位置上的符号有两种极性:阳态(用大写英文字母表示)和阴态(用小写英文字母表示)。
你需要按下标从小到大的顺序,依次处理每个位置 i(1≤i≤n)。初始时,有一个跃迁步长 d=1。对于当前处理的位置 i:
请输出全部操作结束后的序列。
序列的长度 n 满足 1≤n≤2imes105。序列中的字符仅由大写和小写英文字母组成。
第一行包含一个整数 n,表示序列的长度。 第二行包含一个长度为 n 的字符串,由大写和小写英文字母组成,表示每个位置的初始极性(大写为阳态,小写为阴态)。
输出一个长度为 n 的字符串,表示所有操作完成后每个位置的最终极性(阳态用大写字母,阴态用小写字母)。
输入
1
A
输出
A
说明
序列长度 n=1,初始步长 d=1。处理 i=1 时,i+d=2 已超出序列范围,不满足操作条件,因此序列保持不变。最终结果仍为 A。
输入
4
aBcD
输出
ABcd
说明
初始步长 d=1,序列为 aBcD。
B 为阳态(大写字母),满足条件。将 B 调整为阴态 b,d 增加到 2;同时当前第 1 个位置 a 为阴态,调整为阳态 A。序列变为 AbcD。D 为阳态,满足条件。将 D 调整为阴态 d,d 增加到 3;当前第 2 个位置 b 为阴态,调整为阳态 B。序列变为 ABcd。ABcd。输入
5
abcDE
输出
abCdE
说明
初始步长 d=1,序列为 abcDE。
b 为阴态,不满足条件,无修改。c 为阴态,不满足条件,无修改。D 为阳态,满足条件。将 D 调整为阴态 d,d 增加到 2;当前第 3 个位置 c 为阴态,调整为阳态 C。序列变为 abCdE。abCdE。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册