循环滚动字符串的几种方法
来源:互联网 发布:第二批网络禁书目录 编辑:程序博客网 时间:2024/05/21 10:42
题目
例有字符串“abcdefg”,令其向右循环滚动3个字符,则会得到“efgabcd”
现给定字符串和滚动字符数,设计一个算法
方法一:转变为子问题
例如刚才的题目,我们用(a,b)表示a个字符中滚动b次
abcdefg 可以用(7,3)表示,令左边3个字符和右边3个字符交换位置,得到
efg(dabc) 其中前3个字符位置已经正确,题目变为(4,3),同理得到
efg(cab)d 题目变为(3,2),同理得到
efg(ba)cd 题目变为(2,1),同理得到
efgabcd,即所求
实现代码
方法二:常见方法,不解释
具体可参见_JULY_大神的文章
http://blog.csdn.net/v_JULY_v/archive/2011/04/14/6322882.aspx
上的思路1
实现代码
方法三:交换法
此方法是不停用第一个元素和第i个元素进行交换,一共交换len次,就得所求
其中i为 0, n % len, 2n % len, 3n % len ... (n-1)*len % len
如
abcdefg a<->a
dbcaefg a<->d
gbcaefd d<->g
cbgaefd g<->c
fbgaecd c<->f
bfgaecd f<->b
efgabcd b<->e
有一个问题是,如果 n与len非互素,则它们的最大公约数为一组的个数,把整个串分为len/gcd(len,n)组,执行上面的算法
实现代码
- 循环滚动字符串的几种方法
- for循环倒序输出字符串的几种方法
- 创建滚动进度条的几种方法
- 跳出多层循环的几种方法
- 几种list循环的方法
- C跳出循环的几种方法
- 循环遍历的几种方法
- 实现UIScrollView循环滚动的三种方法
- 实现UIScrollView循环滚动的三种方法
- 文字滚动的几种效果及实现方法
- 隐藏scrollview滚动条的几种方法
- split分割字符串的几种方法
- 字符串的几种处理方法
- 分割字符串的几种方法
- Split字符串的几种方法
- split分割字符串的几种方法
- 分割字符串的几种方法
- Int转字符串的几种方法
- Android Service生命周期及用法
- Zend Framework学习日记(2)--HelloWorld篇
- openGL ES 2.0 笔记 3
- ARM的MMU存储访问权限控制详解
- 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
- 循环滚动字符串的几种方法
- 阅读 apiextractor 的CMakeList.txt文件
- 观察者模式
- OpenGL学习笔记 (7) —— 三种不同的纹理滤波方式,光照和键盘控制
- 在Android开发中出现“ActivityMain] Conversion to Dalvik format failed with error 1”错误的处理方法
- 有关数据库的问题
- 如何正确安装IIS for xp
- 手机认证相关知识
- WinForm查看SQL Server所有数据库表信息小工具的一些用法总结