题解 | 左旋转字符串第二种算法

左旋转字符串

https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param str string字符串
 * @param n int整型
 * @return string字符串
 */

void Swap(char *x, char *y, int width)
{
    char t = 0;
    while (width--)
    {
        t = *x;
        *x++ = *y;
        *y++ = t;
    }
}

void reverse_arr(void* a, int n, int width)//逆序n个元素数组a的元素,元素宽度为width
{
    int left = 0, right = n - 1;
    while (left < right)
    {
        Swap((char*)a + left * width, (char*)a + right * width, width);
        left++;
        right--;
    }
}
#include <string.h>
char* LeftRotateString(char* str, int n ) {
    int i=0,j=0,sz=strlen(str);
    if(sz==0) return "";
    n=n%sz;
    reverse_arr(str,n,1);
    reverse_arr(str+n,sz-n,1);
    reverse_arr(str,sz,1);
    return str;
}






全部评论

相关推荐

07-11 15:12
门头沟学院 Java
别人在上班,我就在工位上看看视频啥的,这正常吗?
程序员小白条:实习就是摸鱼,只是公司指标,把你进来了,可能那时候客户很多,但等你进来的时候,已经是淡季了,根本没多少需求,或者说根本不适合实习生去完成,因此你就每天干坐着就行,可能1,2个月都没需求
实习生的蛐蛐区
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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