旋轉字符串

# include <stdio.h>
# include <string.h>
# include <assert.h>

/*

char *left_rorate(char *str,int n)
{
    int i = 0;
    int j = 0;
    char tmp = str[0];
    int len = strlen(str);
    assert(str);

    for (i = 0;i < n; i++)
    {
    tmp = str[0];
    for (j = 0;j < len-1; j++)
    {
    str[j] = str[j+1]; 
    }
    str[j] = tmp;
    }
    return str;
}
*/

void reverse(char *pstart,char *pend)
{
    char tmp = *pstart;
    assert(pstart);
    assert(pend); 
    while (pstart < pend)
    {
    tmp = *pstart;
    *pstart = *pend;
    *pend = tmp;
    pstart++;
    pend--;
    }
}

char *left_rorate1(char *str,int n)
{
    int len = strlen(str);
    assert(str);
    reverse(str,str+n-1);
    reverse(str+n,str+len-1);
    reverse(str,str+len-1);
    return str;
}

int main()
{
    char arr[] = "ABCDEF";
    left_rorate1(arr,2);
    printf("%s\n",arr);
    return 0;
}
發佈了35 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章