环状字符串
题意分析¶
给定一个字符串 $s$,它被看作一个环形结构,即字符串的最后一个字符之后是第一个字符。现在从字符串的第 $n$ 个字符开始,按顺时针方向依次取出 $m$ 个字符,输出组成的新字符串。由于字符串是环状的,取字符时索引超过字符串长度时,需要从头开始继续取。
解题思路¶
本题的关键是模拟字符串环状结构的访问方式:
- 字符串长度为 $L = |s|$;
- 从第 $n$ 个字符开始,即字符串下标为 $n-1$(注意字符串下标从0开始);
- 需要连续取出 $m$ 个字符,考虑可能会超过字符串尾部;
- 利用取模操作实现环状访问,即每次取字符时的位置为 起始下标 $+ i \bmod L$,其中 $i = 0, 1, \ldots, m-1$;
- 按顺序依次获取这 $m$ 个字符并输出。
复杂度分析¶
- 访问 $m$ 个字符,每次计算取模操作,时间复杂度为 $O(m)$;
- 额外空间复杂度为 $O(1)$(如果直接输出,不额外存储新字符串)。