通过逆转实现旋转字符串

//1.实现一个函数,可以左旋字符串中的k个字符。
//ABCD左旋一个字符得到BCDA
//ABCD左旋两个字符得到CDAB
//
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
ABCD先把ABC逆转,再把D逆转,再整体逆转
//void reverse(char* left,char* right){
// while(left < right){
// int tmp =*left;
// *left =right;
// right = tmp;
// ++left;
// --right;
// }
//}
//void leftRotate2(char
arr, int k){
// int len = strlen(arr);
// k %= len;
// //{0,k-1}
// reverse(arr, arr + k - 1);
// //{k,len-1}
// reverse(arr+k, arr + len - 1);
// //{0.len-1}
// reverse(arr, arr + len - 1);
//}
//void leftRotate(char
arr, int k){
// while (k–){
// int start = 0;
// int tmp = arr[start];
// while (arr[start + 1] != ‘\0’){
// arr[start] = arr[start + 1];
// ++start;
// }
// arr[start] = tmp;
// }
//}
//
//int main(){
// char arr[] = “ABCD”;
// int k;
// scanf_s("%d", &k);
// printf("%s\n", arr);
// for (int i = 1; i <= k; ++i){
// leftRotate2(arr, i);
// printf("%s\n", arr);
// }
// system(“pause”);
// return 0;
//}

//2.判断一个字符串是否为另外一个字符串旋转之后的字符串。
//例如:给定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 <stdlib.h>
//#include <string.h>
//void reverse(char* left, charright){
// while (left < right){
// int tmp = left;
// left = right;
// right = tmp;
// ++left;
// --right;
// }
//}
//void leftRotate(char
arr, int k){
// int len = strlen(arr);
// k %= len;
// reverse(arr, arr + k - 1);
// reverse(arr + k, arr + len - 1);
// reverse(arr, arr + len - 1);
//}
//int isRotate2(char
dest, const char
src){
// int len = strlen(dest);
// strncat(dest, dest, len);//拼接函数,最后给个‘\0’结束
// //比较函数,如果前面的字符串含有后面的,就返回一个非空的指针,否则返回空指针
// if (strstr(dest, src) == NULL){
// return 0;
// }
// else
// return 1;
//}
//int isRotate(char
dest, const char
src){
// int len = strlen(dest);
// while (len–){
// leftRotate(dest, 1);
// //判断这两个数组是否想等
// if (strcmp(dest, src) == 0){
// return 1;
// }
// }
// return 0;
//}
//
//int main(){
// char dest[30];
// char src[30];
// scanf("%s", dest);
// scanf("%s", src);
// printf("%d\n", isRotate(dest, src));
// printf("%d\n", isRotate2(dest, src));
// system(“pause”);
// return 0;
//}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值