题解 | #左旋转字符串#
左旋转字符串
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
int len = 0;
while (str[len] != '\0') {
len++;
}
if (len == 0) {
return str;
}
int temp = n % len;//关键就是由范例看出取余运算,把要放到后面的元素取到一个临时数组中,最后再拼接即可
char* arr = (char*)malloc(sizeof(char)*temp);
for (int i = 0; i < temp; i++) {
arr[i] = str[i];
}
for (int i = 0; i < len - temp; i++) {
str[i] = str[i + temp];
}
str[len -temp] ='\0';
strcat(str,arr);
// for (int i = len - temp, j = 0; i < len; ) {
// str[i++] = arr[j++];
// }//用这种方式耗时比strcat(str,arr)高
return str;
}
查看8道真题和解析