字母表循环移位题解(易懂版)
2026-02-01 11:44:48
发布于:广东
5阅读
0回复
0点赞
题目描述
有一个由26个大写英文字母组成的字符串:ABCDEFGHIJKLMNOPQRSTUVWXYZ
现在给你一个整数n,你需要将这个字符串循环左移n位后输出。
循环左移是什么意思?
就像把一队小朋友排队,最前面的小朋友移到队伍最后面,其他小朋友都往前移动一位。例如:
- 原始队伍:A B C D E F ... Z
- 左移1位:B C D E F ... Z A
- 左移2位:C D E F ... Z A B
解题思路
字母表只有26个字母,所以:
- 左移26位就回到原样(相当于没移)
- 左移27位和左移1位结果一样
所以我们先让n除以26取余数,这样n就会变成0~25之间的数。
然后:
- 把字母表从第
n个字母开始到最后的字母取出来(后面部分) - 再把字母表开头的
n个字母取出来(前面部分) - 把这两部分拼接在一起
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int n;
cin >> n;
n = n % 26; // 让n在0~25之间
// s.substr(n):从位置n开始取到末尾
// s.substr(0, n):从位置0开始取n个字母
cout << s.substr(n) + s.substr(0, n);
return 0;
}
如果题解对你有帮助的话,不妨留下你的点赞吧
这里空空如也




有帮助,赞一个