编程珠玑——字符串移位
来源:互联网 发布:闲鱼如何申请淘宝介入 编辑:程序博客网 时间:2024/06/06 00:25
1.题目描述
讲一个n圆一维向量向左旋转i个位置。例如,当n=8且i=3时,向量abcdefgh旋转为defghabc。现在要求在O(n)的时间复杂度,且空间复杂度为O(1)。
2.算法
2.1字符串逆序解决
例如:当n=8且i=3时,向量为abcdefgh。先旋转前3个字符得到cbadefgh,再转换后5个字符得到cbahgfed,最后旋转整个字符串得到defghabc。
//翻转字符串str的start到end的地方string reverse(string str, int begin, int end){int e = (begin + end) / 2; //求出最后一个交换的位置for (int i = begin; i <= e; ++i){swap(str[i], str[end + begin - i]); //这里注意与i交换的元素为end+begin-i,即i+(end+begin-i) = begin+end}return str;}//字符串移位string shift(string str, int length, int x){str = reverse(str, 0, x - 1); //逆序前一部分str = reverse(str, x, length - 1); //逆序后一部分str = reverse(str, 0, length - 1); //逆序整个字符串return str;}
1 0
- 编程珠玑——字符串移位
- 字符串循环移位 - 编程珠玑的一道题
- 字符串旋转问题——来自编程珠玑
- 《编程珠玑》第二章-循环移位
- <<编程珠玑>> 字符串
- 编程珠玑字符串反转
- 编程珠玑 旋转字符串
- 编程之美——字符串移位包含问题
- 编程之美——3.1字符串移位包含问题
- 编程之美——字符串移位包含问题
- 编程之美3.1——字符串循环移位
- 编程之美—字符串移位包含问题
- 编程之美3.1—字符串移位包含问题
- 旋转字符串;编程珠玑第二章;rotate a one-dimensional vector;循环移位数组;编程之美
- 数据结构——编程珠玑
- 编程珠玑——第一章
- 编程珠玑—代码优化
- 《编程珠玑》—习题提示
- Android应用架构之Retrofit使用
- Python 数据科学入门
- 初读《演说之禅设计篇》有感
- Android之点击回退键俩次退出程序
- Appium移动自动化测试(五)——获取apk的package、activity和element
- 编程珠玑——字符串移位
- C#解析Json数据(利用Newtonsoft.Json库)
- hdu 1251 统计难题
- android调用webservice带soapheader验证
- android开发环境
- Java finally语句到底是在return之前还是之后执行?
- 说说TDD的好处和坏处-对话
- JAVA自增陷阱
- ISO C++11 doesn't allow conversion from string literal to 'char*'