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

左旋转字符串

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






全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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