题目:定义字符串的左旋转操作,把字符串前面的若干个字符移动到字符串的尾部。
要求:对长度为n的字符串操作的时间复杂度为O(n),辅助内存为O(1)。
举例:把字符串abcdef左旋转2位得到字符串cdefab。
答:
#include "stdafx.h"#includeusing namespace std;void swap(char *str, int begin, int end){ char ch; while (begin < end) { ch = *(str + begin); *(str + begin) = *(str + end); *(str + end) = ch; begin++; end--; }}void Rotate(char *str, int length ,int m){ if (NULL == str || length == 1) { return; } swap(str, 0, m - 1); swap(str, m, length - 1); swap(str, 0, length - 1);}int _tmain(int argc, _TCHAR* argv[]){ char chArr[] = "abcdef"; char *p = chArr; cout< <
运行界面如下: