题解 | #左旋转字符串#
左旋转字符串
https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param n int整型 * @return string字符串 */ #include <stdlib.h> char* LeftRotateString(char* str, int n ) { // write code here char* tmp = (char*)malloc(sizeof(char)*n); //申请空间存储要移动的字符串 int len = 0; char* cur = str; while(*cur++ != '\0')len++; //计算str的长度 if(len){ //如果长度为空,则直接返回 n %= len; //取余,相当于剪枝,减少循环次数 //保存要移动的字符串 for(int i = 0; i < n; i++){ tmp[i] = str[i]; } //将str的n~len-1位移动到数组前 for(int i = n; str[i] != '\0'; i++){ str[i-n] = str[i]; } //将移出的字符串插入到新的str的后面 for(int j = 0; j < n; j++){ str[len-n+j] = tmp[j]; } } free(tmp); //释放申请的临时空间 return str; }