题意:给定只含大小写字母的字符串 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 、由大小写字母组成的字符串 s (下标从 1 开始)。存在一个计数器 x ,初始 x=1 。你需要按下标从小到大的顺序,依次对每个下标 i 执行如下操作:
请输出全部操作结束后的字符串。
第一行输入一个整数 n(1≦n≦2×105) ,表示字符串长度。
第二行输入一个长度为 n 、仅由大小写字母组成的字符串 s 。
在一行上输出一个长度为 n 的字符串,表示全部操作结束后的结果。
输入
4
abcX
输出
abCx
说明
在这组样例中:
初始 x=1 。当 i=1,2 时 i+x 对应的字符均不满足大写当 i=3 时,i+x=4 且 s4=′X′ 为大写,故将其改为小写 ′x′ 灭 增加为 2 ;同时 s3=′c’ 为小写,改为大写 ′C′;
其他位置不触发条件,不进行修改,最终得到 "abCx" 。
输入
6
aABCDe
输出
AABcDe
输入
5
AbCdE
输出
ABCde