c语言-字符串循环左移

编程要求

字符串的循环左移,指的是将字符串整体向左移动,左部超出范围的字符回到右边,比如对于字符串123,它循环左移1位的结果是231

在右侧编辑器中有一个函数Shift,它有两个参数strnstr存有一个字符串,n为要左移的距离,为非负数

请在这个函数中,将str循环左移n位,然后输出,占一行。

输入数据由评测系统读取,并传递给Shift函数。具体见测试说明

测试说明

测试输入:123 1 预期输出:231

测试输入:abc 0 预期输出:abc

每组输入一行,有两个数据,分别对应strn

方法一:

#include 
#include 
using namespace std;
/**********   Begin   **********/
void Shift(char *str,int n)
{
    int len=0,i;

    // char *p=str;
    // while(*p!='\0'){
    //     len++;
    //     p++;
    // } //求字符串长度

    len=strlen(str);

    n%=len;
   // printf("n=%d,len=%d",n,len);

    while(n--){
        char tmp = str[0];   
        for (int i=0; i

方法二:

    #include 
    #include 
    using namespace std;
    /**********   Begin   **********/
    void rev(char *start,char *end)
    {
        while(start < end)
        {
            char t = *start;
            *start = *end;
            *end = t;
            start++;
            end--;
        }
    }
    void Shift(char *str,int n)
    {
        int len = strlen(str);
        n = n % len;
        rev(str,str + n - 1);
        rev(str + n, str + len - 1);
        rev(str,str + len - 1);
        cout << str << endl;
    }
    /**********   End   **********/

 

你可能感兴趣的:(C,c语言,字符串)