zoukankan      html  css  js  c++  java
  • 实现一个函数,可以左旋字符串中的k个字符

    ABCD左旋一个字符得到BCDA
    ABCD左旋两个字符得到CDAB

     ABCD
     BACD
     BCAD
     BCDA
     CBDA
     CDBA
     CDAB
     发现规律: 如果左旋一个字符则可以将第一个字符依次与后面的字符交换位置
             如果左旋k个字符则可以将上面的操作进行k次

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define _CRT_SECURE_NO_WARNINGS
     4 
     5 void Change_str(char* start,char* end,int num)
     6 {
     7     //ABCD
     8     //BACD
     9     while (*end!='')
    10     {
    11         *start = *start^*end;
    12         *end = *start^*end;
    13         *start = *start^*end;
    14         ++start;
    15         ++end;
    16     }
    17 }
    18 
    19 int main()
    20 {
    21     char str[100];
    22     printf("请输入一段字符串:
    ");
    23     scanf("%s",&str);
    24     printf("请输入左旋的字符数k:
    ");
    25     int k = 0;
    26     scanf("%d",&k);
    27     int num = (int)strlen(str);
    28     for (int i = 0;i < k;++i)
    29     {
    30         Change_str(str, str + 1, num);
    31     }
    32     printf("%s
    ", str);
    33 
    34     return 0;
    35 }
  • 相关阅读:
    工厂方法模式
    代理模式
    观察者模式
    策略模式
    单例模式
    简单工厂模式
    lintcode:等价二叉树
    lintcode:被围绕的区域
    lintcode:二叉树的所有路径
    lintcode:快乐数
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/10382466.html
Copyright © 2011-2022 走看看