【100题】左旋转字符串-----整体翻转+局部再次翻转
2012-07-29 09:16
363 查看
//使用两次翻转的方法来对付左旋转字符串 //即----字符串的循环左移 #include <iostream> using namespace std; void ReverseString(char *pStart,char *pEnd) { if(pStart != NULL || pEnd != NULL) { while(pStart <= pEnd) { swap(*pStart,*pEnd); pStart++; pEnd--; } } } char *LeftRotateString(char *p,unsigned int n) { if(p != NULL) { int nLength = static_cast<int> (strlen(p)); if(nLength>0 || n>=0 && n <= nLength) { char *pFirstStart = p; char *pFirstEnd = p+n-1; char *pSecondStart = p+n; char *pSecondEnd = p+nLength-1; ReverseString(pFirstStart,pFirstEnd); ReverseString(pSecondStart,pSecondEnd); ReverseString(pFirstStart,pSecondEnd); } } return p; } void main() { char str[] = "abcdefg"; cout << LeftRotateString(str,4) <<endl; }
相关文章推荐
- 左旋转字符串LeftRotateString -- 翻转单词顺序
- 翻转句子中单词的顺序和字符串的旋转操作 c++面试题
- 微软100题(26)左旋转字符串
- 翻转单词顺序VS左旋转字符串----->“字符串翻转”
- 剑指offer——翻转单词顺序VS左旋转字符串
- 程序员面试题精选100题(21)-左旋转字符串
- 剑指Offer——翻转单词顺序VS左旋转字符串
- 翻转单词顺序VS左旋转字符串
- 【剑指offer】面试题42-翻转单词顺序VS左旋转字符串
- 【剑指offer】题42:翻转单词顺序VS左旋转字符串
- 剑指offer——面试题42:翻转单词顺序VS左旋转字符串
- 面试题42:翻转单词顺序VS左旋转字符串
- 翻转单词顺序 VS 左旋转字符串
- 字符串翻转和旋转问题和例题
- 【100题】第二十六 左旋转字符串
- 剑指offer 42. 翻转单词顺序VS左旋转字符串
- 翻转单词顺序&左旋转字符串
- 微软算法100题26 左旋转字符串
- 翻转字符串VS左旋转字符串
- 程序员面试题100题第21题——左旋转字符串