题解 | 左旋转字符串第二种算法
左旋转字符串
https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param n int整型 * @return string字符串 */ void Swap(char *x, char *y, int width) { char t = 0; while (width--) { t = *x; *x++ = *y; *y++ = t; } } void reverse_arr(void* a, int n, int width)//逆序n个元素数组a的元素,元素宽度为width { int left = 0, right = n - 1; while (left < right) { Swap((char*)a + left * width, (char*)a + right * width, width); left++; right--; } } #include <string.h> char* LeftRotateString(char* str, int n ) { int i=0,j=0,sz=strlen(str); if(sz==0) return ""; n=n%sz; reverse_arr(str,n,1); reverse_arr(str+n,sz-n,1); reverse_arr(str,sz,1); return str; }