• 纪念逝去的岁月——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]

    再见……

  • 相关阅读:
    隔离级别
    分析Hello2代码
    正则表达式
    Filter and servlet
    部署描述符
    Annotation
    LDAP and Implementation
    Restful levels and Hateoas
    servlet injection analysis
    隔离级别
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4312931.html
Copyright © 2020-2023  润新知