[剑指offer]翻转句子 ; 左旋字符串
来源:互联网 发布:淘宝介入假冒品牌 编辑:程序博客网 时间:2024/04/29 16:53
/* 42:> 翻转句子 ; 左旋字符串 i am student -> student am i (整体翻转,局部翻转)*/void Reserve(char* pBegin, char* pEnd){ if (pBegin == NULL || pEnd == NULL || pBegin+1==pEnd) return; while (pBegin < pEnd) { std::swap(*pBegin,*pEnd); pBegin++; pEnd--; }}void ReserveSentense(char* pData){ if (pData == NULL) return; char* pBegin = pData; char* pEnd = pBegin; while (*pEnd != '\0') pEnd++; pEnd--; //指向尾 Reserve(pBegin, pEnd);//整体翻转 pEnd = pBegin = pData; while (*pBegin != '\0') { if (*pBegin == ' ') { pBegin++; pEnd++; } else if (*pEnd == ' ' || *pEnd == '\0') { Reserve(pBegin, --pEnd); pBegin = ++pEnd; } else ++pEnd; }}//void test()//{// //char ar[] = "i am a student";// char ar[] = " i am a student";// ReserveSentense(ar);// cout << ar /*<< endl*/;//}/* 左旋单词 abcdefg ->2 -> cdefgab 分两部分 ab cdefg 整体翻转 部分翻转*/void LeftRotateStr(char*pStr, int n){ if (pStr == NULL || n<= 0) return; int len = strlen(pStr); n %= len;//大于长度会指向非法内存 char* pFirstStart = pStr; char* pFirstEnd = pStr + n - 1; char* pSecondStart = pStr + n; char* pSecondEnd = pStr + len - 1; Reserve(pFirstStart, pFirstEnd); Reserve(pSecondStart, pSecondEnd); Reserve(pFirstStart, pSecondEnd);}//void test()//{// char ar[] = "i am a student";// // LeftRotateStr(ar,15);// cout << ar << endl;//}
2 0
- [剑指offer]翻转句子 ; 左旋字符串
- 【剑指offer系列】 翻转单词 VS 左旋字符串___42
- 剑指Offer之 - 翻转单词顺序 VS 左旋转字符串
- 剑指offer 42 - 翻转单词顺序 左旋转字符串
- 剑指Offer: 翻转单词顺序列、左旋转字符串
- 剑指offer 42. 翻转单词顺序VS左旋转字符串
- 剑指offer面试题42翻转单词顺序VS左旋字符串
- 剑指offer 字符串左旋
- 剑指offer-左旋字符串
- 剑指offer-左旋字符串
- 翻转单词+左旋字符串
- 剑指offer之翻转单词顺序(翻转句子,但组成句子的单词内部有序)
- [剑指offer][面试题42]翻转单词顺序 VS 左旋转字符串
- [剑指offer]面试题42:翻转单词顺序,左旋转字符串
- 剑指offer——翻转单词顺序VS左旋转字符串
- 剑指offer 面试题42 翻转单词顺序 | 左旋转字符串
- 剑指offer 面试题42—翻转单词顺序VS左旋转字符串
- 【剑指Offer学习】【面试题42:翻转单词顺序vs左旋转字符串】
- 负载均衡
- eleasticsearch学习笔记(未完)
- C++的三大特性:封装、继承、多态
- 安卓view的绘制,涂鸦功能实现,恢复撤销功能
- jsp的select控件,怎么用EL表达式自动选中
- [剑指offer]翻转句子 ; 左旋字符串
- 分布式
- OpenCV中与matlab中相对应的函数
- Oracle 表检查有什么功能
- django
- jQuery 获取屏幕高度、宽度
- 用面向对象的方法进行设计
- 集群
- widgets之SeekBar