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;
}