zoukankan      html  css  js  c++  java
  • 纪念逝去的岁月——C/C++字符串旋转

    几年前,我还不会写这个

    例如:

    1、向右→旋转5个字符

    输入:HelloWorld

    输出:WorldHello

    2、向右→旋转3个字符

    输入:HelloWorld

    输出:rldHelloWo

    代码

     1 #include <string.h>
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 int scrollstr(char * p, int iStep)
     6 {
     7     if(NULL == p)
     8     {
     9         return -1;
    10     }
    11     int iLen = strlen(p);
    12     iStep %= iLen;
    13     if(0 == iStep)
    14     {
    15         return 0;
    16     }
    17     char * pt = (char *)malloc(iLen + 1);
    18     if(NULL == pt)
    19     {
    20         return -1;
    21     }
    22     memset(pt, 0, iLen + 1);
    23     int i = 0;
    24     for(i = 1; i <= iStep; i++)
    25     {
    26         pt[iStep - i] = p[iLen - i];
    27     }
    28     for(i = 1; i <= iLen - iStep; i++)
    29     {
    30         p[iLen - i] = p[iLen - i - iStep];
    31     }
    32     for(i = 0; i < iStep; i++)
    33     {
    34         p[i] = pt[i];
    35     }
    36 
    37     return 0;
    38 }
    39 
    40 int main()
    41 {
    42     char pX[128] = {"HelloWorld"};
    43 
    44     printf("src : [%s]
    ", pX);
    45     scrollstr(pX, 5);
    46     printf("dst : [%s]
    ", pX);
    47 
    48     return 0;
    49 }

    编译

    $ g++ -o scrollstring scrollstring.cpp

    运行

    $ ./scrollstring 
    src : [HelloWorld]
    dst : [WorldHello]

    再见……

  • 相关阅读:
    Luogu5860 「SWTR-03」Counting Trees
    $NOIP1998$ 题解报告
    $NOIP1997$ 题解报告
    $NOIP2008$ 题解报告
    $NOIP2004$ 题解报告
    $NOIP2010$ 题解报告
    $NOIP2009$ 题解报告
    Luogu P1879 玉米田 题解报告
    CH301 任务安排2 题解报告
    $[NOIp2017]$ 逛公园 $dp$/记搜
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4312931.html
Copyright © 2011-2022 走看看