C语言求左旋字符串
解题思路
对于一个字符串abcdfe,循环左移,这道题我一开始想的是用循环队列的方式来做,但是根据力的作用是相互的(其实是,当队列空间正好等于字符串长度,循环移位其实元素根本没动),那么是不是可以反过来移动指针呢,循环左移n位,相当于将指针循环右移n位,直接对n取模,确定最后指针位置,将两部分的元素依次输出即可
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @param n int整型
* @return string字符串
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
char* LeftRotateString(char* str, int n ) {
// write code here
//直接将字符串考虑成一个循环,左移n位,相当于指向第一个的指针右移n位
int len=strlen(str);
if(len==0||n==0)
return str;
char *ans=(char *)malloc(len);
//先对n取模
n%=len;
int i=0;
for(int j=n;j<len;j++)
ans[i++]=str[j];
for(int j=0;j<n;j++)
ans[i++]=str[j];
return ans;
}