解题思路
题意:给定只含大小写字母的字符串 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] 在需要时改成大写。整个过程只前进一次,所有操作都可在原串上完成。
P3891.第1题-大写迁移
题目内容
给定一个长度为 n 、由大小写字母组成的字符串 s (下标从 1 开始)。存在一个计数器 x ,初始 x=1 。你需要按下标从小到大的顺序,依次对每个下标 i 执行如下操作:
- 若 i+x≤n 且 si+x 为大写字母,则将 si+x 修改为小写字母,然后将增加 1 ;同时,若 si 为小写字母,则将 si 修改为大写字母。若不满足上述条件,则本次不进行任何修改。
请输出全部操作结束后的字符串。