字符串的左旋右旋

1.使用宏实现两个数中求较大值。
2.实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB

3.判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

//1.使用宏实现两个数中求较大值。 
//#define MAX(a,b)a>b?a:b
//void main()
//{
//  int a = 3, b = 5;
//  printf("%d\n", MAX(a, b));
//}

//2.实现一个函数,可以左旋字符串中的k个字符。 
//ABCD左旋一个字符得到BCDA
//ABCD左旋两个字符得到CDAB
//void Left_Move(char* p, int k)
//{
//  int len = strlen(p);
//  for (int i = 0; i < k; ++i)//控制旋转字符数
//  {
//      char tmp = p[0];
//      for (int j = 0; j < len - 1; ++j)//完成一次旋转
//      {
//          p[j] = p[j + 1];
//      }
//      p[len - 1] = tmp;
//  }
//}
//
//void main()
//{
//  char p[] = "ABCD";
//  int k = 0;
//  printf("k=");
//  scanf("%d", &k);
//  Left_Move(p, k);
//  printf("%s\n",p);
//}

//3.判断一个字符串是否为另外一个字符串旋转之后的字符串。
//int Compare(char* p1, char* p2)
//{
//  int len1 = strlen(p1);
//  int len2 = strlen(p2);
//  if (len1 != len2)
//  {
//      return 0;
//  }
//  for (int i = 0; i < len1; ++i)//控制旋转字符数
//  {
//      char tmp = p1[0];
//      for (int j = 0; j < len1 - 1; ++j)//完成一次旋转   ABCD
//      {
//          p1[j] = p1[j + 1];
//      }
//      p1[len1 - 1] = tmp;
//      if (0 == strcmp(p1, p2))
//      {
//          return 1;
//      }
//  }
//}
//
//void main()
//{
//  char p1[] = "ABCD";
//  char p2[] = "BCDA";
//  printf("p1 = %s\n", p1);
//  printf("p2 = %s\n", p2);
//  printf("%d\n", Compare(p1, p2));
//}

//右旋
//void Right_Move(char* p, int k)
//{
//  int len = strlen(p);
//  for (int i = 0; i < k; ++i)//控制旋转字符数
//  {
//      char tmp = p[len - 1];
//      for (int j = len - 1; j > 0; --j)//完成一次旋转
//      {
//          p[j] = p[j - 1];
//      }
//      p[0] = tmp;
//  }
//}
//
//void main()
//{
//  char p[] = "ABCD";
//  int k = 2;
//  Right_Move(p, k);
//  printf("%s", p);
//}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值