[字符串] 一个巧妙的字符串循环移位法
2015-07-16 19:39
363 查看
给定一个长度为m的串,将其循环移位,向右移动n位,输出循环移位后的字符串:
例: m=7,n=3;
移动前:”1234567”
移动后:”5671234”
一个巧妙的办法:
将给定的串分割成两个串,长度分别为m-n和n,分别将其翻转,翻转后将其连接成一个串,再次翻转,就得到了最终移动后的串!
“1234567”
“1234”,”567”
“4321”,”765”
“4321765”
“5671234”
字符串X1部分为右移的n位字符(移位后在字符头)
字符串X2部分为剩下m-n位字符(移位后在字符尾)
本质上就是一个swap函数,从左到右经过两次翻转,就可以以翻转的形式来调换相应的位置。
如果要向左移动,方法也完全相同,把X1的长度设为n,X2的长度设为m-n就可以
移动前:”1234567”
移动后:”4567123”
“1234567”
“123”,”4567”
“321”,”7654”
“3217654”
“4567123”
例: m=7,n=3;
移动前:”1234567”
移动后:”5671234”
一个巧妙的办法:
将给定的串分割成两个串,长度分别为m-n和n,分别将其翻转,翻转后将其连接成一个串,再次翻转,就得到了最终移动后的串!
“1234567”
“1234”,”567”
“4321”,”765”
“4321765”
“5671234”
字符串X1部分为右移的n位字符(移位后在字符头)
字符串X2部分为剩下m-n位字符(移位后在字符尾)
本质上就是一个swap函数,从左到右经过两次翻转,就可以以翻转的形式来调换相应的位置。
如果要向左移动,方法也完全相同,把X1的长度设为n,X2的长度设为m-n就可以
移动前:”1234567”
移动后:”4567123”
“1234567”
“123”,”4567”
“321”,”7654”
“3217654”
“4567123”
相关文章推荐
- opencv cvSplit cvMerge
- 组合数学+整数分解 POJ 2992 Divisors
- UVALive 4253 Archery(二分+atan2应用)
- HTML5第三弹:亦酷亦萌的网络拓扑图
- 关于NSString的练习题
- SpringMVC——接收请求参数和页面传参
- ZigZag Conversion
- HDU 5113 Black And White(DFS+剪枝)
- Hadoop map任务个数分析
- 二分图最大匹配(匈牙利算法) UVA 670 The dog task
- java学习&复习 2015/07/16
- POJ 1276 Cash Machine
- HDU 1394 解题报告 线段树 单点更新
- linux常用指令(新手总结)
- mysql创建外键出错(注意数据库表字段排序)
- 【数据库范式】 分析题第一范式
- VS2010调试JM8.6
- 计算4000000000内的最大f(n)=n值---字符串的问题python实现(五岁以下儿童)
- 『Luogu OJ』『C++』Level 1-4 数组
- 【Python 学习手册笔记】元组、文件及其他