左旋转字符串
字符串 旋转
2023-09-27 14:23:30 时间
要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)
char* LeftRotateString(char* pStr, int n)
{
if (pStr != NULL)
{
int nLength = static_cast<int>(strlen(pStr));
if (nLength > 0 && n > 0 && n < nLength)
{
char* pFirstStart = pStr;
char* pFirstEnd = pStr + n - 1;
char* pSecondStart= pStr + n;
char* pSecondEnd = pStr + nLength - 1;
//翻转字符串的前面n个字符
Reverse(pFirstStart, pFirstEnd);
//翻转字符串的后面部分
Reverse(pSecondStart, pSecondEnd);
//翻转整个字符串
Reverse(pFirstStart, pSecondEnd);
}
}
return pStr;
}
void Reverse(char* pBegin, char* pEnd)
{
if (pBegin == NULL || pEnd == NULL)
return;
while (pBegin < pEnd)
{
char temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;
pBegin++, pEnd--;
}
}
相关文章
- PHP字符串函数 number_format(以千位分隔符方式格式化一个数字)
- java中字符串Base64、16进制的转解码函数DatatypeConverter.printBase64Binary、parseBase64Binary用法
- 判断两个字符串s1和s2是否互为旋转词,互为旋转字符串
- Elasticsearch Query & Filtering 与 多字符串多字段查询详解
- bash中的字符串处理
- 《Python Cookbook(第2版)中文版》—— 1.4 字符串对齐
- 《Python Cookbook(第2版)中文版》——1.17 替换字符串中的子串—Python 2.4
- C#字节数组与字符串转换
- [LeetCode]剑指 Offer 58 - II. 左旋转字符串
- 【C语言】输入三个字符串,比较其大小,最终将它们由大到小输出。利用C指针。
- js字符串中查看有没有在数组中的值有的话全部替换掉
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)
- 《剑指offer》-- 和为S的连续整数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列
- [LeetCode] 358. Rearrange String k Distance Apart 按距离为k隔离重排字符串
- [LeetCode] 271. Encode and Decode Strings 加码解码字符串
- mysql 字符串按照数字类型排序
- Python蓝桥杯训练:数组和字符串 Ⅰ
- 练习 3-2 编写一个函数escape(s, t),将字符串t复制到字符串s中,并在复制过程中将换行符、制表符等不可见字符分别转换为n、t等相应的可见的转义字符序列。要求使用switch语句。
- Python字符串操作