当前位置: 首页 > article >正文

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

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

  • 题目描述
  • 解题思路 & 代码实现

题目描述

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

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

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

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

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

样例输入:

2
abcdefg

样例输出:

fgabcde

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

解题思路 & 代码实现

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

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;
}

http://www.kler.cn/a/153319.html

相关文章:

  • 华为云SDK的全部Maven参考
  • ChatGPT 上线一周年
  • 洛谷P1049装箱问题 ————递归+剪枝+回溯
  • 京东数据运营-京东数据开放平台-鲸参谋10月粮油调味市场品牌店铺销售数据分析
  • 【区块链】产品经理的NFT初探
  • 深度学习之循环神经网络
  • 小米智能摄像头mp4多碎片手工恢复案例
  • 大数据(十二):方差分析和参数估计
  • Mybatis 的操作(续集)
  • Jmeter进阶使用:BeanShell实现接口前置和后置操作!
  • 电子学会C/C++编程等级考试2021年12月(四级)真题解析
  • DynamicDataSource
  • Find My键盘|苹果Find My技术与键盘结合,智能防丢,全球定位
  • springboot参数汇总
  • C语言:求十个数中的平均数
  • 2023年小美赛认证杯数学建模B题赛题
  • 【DBeaver】驱动添加-Hive和星环
  • 刷题笔记(第九天)
  • 使用autodl服务器,两个3090显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度23 words/s
  • 如何创建百科?建立百科词条的意义何在?九问百科营销