题解 | #左旋转字符串#

左旋转字符串

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

全部评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务