/**/ /********************************************************************** 字符串移动函数 给定一个字符串,要求在给定位置进行左移。例如:给定”abcdefg”,给定 i = 3进行左移,得到的结果应该为”defgabc” ***********************************************************************/ char * MoveLeft1( char * str, int p) ... { int len = strlen(str); char *temp = new char[len + 1]; strncpy(temp, str, p); strncpy(str, str + p, len - p); strncpy(str + len - p, temp, p); delete []temp; temp = NULL; return str;} /**/ /* from pi positon reverse the len char */ char * ReverseString( char * str, int pi, int len) ... { assert(str != NULL); char *p = str + pi; char *q = str + pi + len - 1; for (; p < q; p++, q--) ...{ *p = *p ^ *q; *q = *p ^ *q; *p = *p ^ *q; } return str;} /**/ /* another implemention using (a'b')'= ba */ char * MoveLeft2( char * str, int p) ... { int len = strlen(str); ReverseString(str, 0, p); ReverseString(str, p, len - p); ReverseString(str, 0, len); return str;} /**/ /* rotate move left */ char * MoveLeft3( char * str, int p) ... { int len = strlen(str); for (int i = 0; i < p; i++) ...{ int temp = str[0]; for (int j = 1; j < len; j++) ...{ str[j - 1] = str[j]; } str[len - 1] = temp; } return str;}