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

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

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

题目描述

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

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 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;
}
相关推荐
河阿里3 分钟前
深入理解LRU缓存机制:从原理到应用(C++实现
开发语言·c++·缓存
05候补工程师3 分钟前
【408考研·OS】核心考点:中断分类、线程模型 (KLT/ULT) 与调度算法方法论总结
经验分享·笔记·考研·算法
多加点辣也没关系12 分钟前
数据结构与算法|第十二章:图
数据结构·算法
MClink19 分钟前
小米开源大模型 MiMo 登顶全球第一,还白送百万亿 Token?手把手教你薅羊毛
人工智能·python·算法·openai·架构设计
唠玖馆23 分钟前
c++ 栈和队列
c++
邪修king27 分钟前
UE5 C++ 游戏性能优化:大一也能学会的实战级优化指南
c++·游戏·ue5
诙_28 分钟前
深入理解C++--STL
开发语言·c++
ximu_polaris39 分钟前
C++高频面试题汇总
c++·面试
阿正的梦工坊39 分钟前
认证、授权、JWT、密码哈希:Node.js 鉴权到底在做什么
算法·node.js·哈希算法
sali-tec39 分钟前
C# 基于OpenCv的视觉工作流-章67-线线间距
图像处理·人工智能·opencv·算法·计算机视觉