代码随想录二刷 |字符串 |右旋转字符串

代码随想录二刷 |字符串 |右旋转字符串

  • 题目描述
  • [解题思路 & 代码实现](#解题思路 & 代码实现)

题目描述

代码随想录二刷 |字符串 |右旋转字符串

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。

例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。

输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。

输出:输出共一行,为进行了右旋转操作后的字符串。

样例输入:

2

abcdefg

样例输出:

fgabcde

数据范围:1 <= k < 10000, 1 <= s.length < 10000;

解题思路 & 代码实现

本题中,我们需要将字符串右移 n 位,字符串相当于分成了两个部分,如果n为2,符串相当于分成了两个部分,思路就是 通过 整体倒叙,把两段子串顺序颠倒,两个段子串里的的字符再倒叙一把,负负得正,这样就不影响子串里面字符的顺序了。

cpp 复制代码
int main() {
	int n;
	string s;
	cin >> n;
	cin >> s;
	int len = s.size();
	reverse(s.begin(), s.end()); // 整体翻转
	reverse(s.begin(), s.begin() + n); // 先翻转前一段,长度为 n
	reverse(s.begin() + n, s.end()) // 再翻转后一段
	
	cout << s << endl;
}
相关推荐
tanyongxi6616 分钟前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
qq_5139704417 分钟前
力扣 hot100 Day76
算法·leetcode·职场和发展
fqbqrr35 分钟前
2508C++,支持rdma通信的高性能rpc库
c++·rpc
Moshow郑锴1 小时前
机器学习相关算法:回溯算法 贪心算法 回归算法(线性回归) 算法超参数 多项式时间 朴素贝叶斯分类算法
算法·机器学习·回归
liulilittle1 小时前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
剪一朵云爱着1 小时前
PAT 1065 A+B and C (64bit)
算法·pat考试
喜欢吃燃面2 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso2 小时前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他
困鲲鲲2 小时前
CPP多线程2:多线程竞争与死锁问题
c++·多线程·死锁
项目申报小狂人2 小时前
算法应用上新!自适应更新策略差分进化算法求解球形多飞行器路径规划问题,附完整MATLAB代码
开发语言·算法·matlab