不负韶华

来源:互联网 发布:java多线程 返回数据 编辑:程序博客网 时间:2024/04/27 19:30
1.实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>void left_revolve(char *p,int k,int len){int i = 0;int j = 0;for(j=0;j<k;j++){char tmp = p[0];for(i=0;i<len-1;i++){p[i]=p[i+1];}p[len-1]=tmp;}}int main(){char arr[]="ABCD";int k = 1;int len = 0;printf("请输入左旋字符个数:");scanf("%d",&k);len = strlen(arr);left_revolve(arr,k,len);printf("%s\n",arr);return 0;}
2.判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>#include <stdlib.h>#include <string.h>void left_revolve(char *p,int len,int k){int j = 0;for(j=0;j<k;j++){char tmp = p[0];int i = 0;for(i=0;i<len-1;i++){p[i]=p[i+1];}p[len-1]=tmp;}}void right_revolve(char *p,int len,int k){int j = 0;for(j=0;j<k;j++){char tmp = p[len-1];int i = 0;for(i=len-1;i>=0;i--){p[i]=p[i-1];}p[0]=tmp;}}int main(){char arr1[10]="AABCD";char arr2[10]="DAABC";int len=strlen(arr1);int k=len;while(k){left_revolve(arr1,len,k);if(strcmp(arr1,arr2)==0){printf("1\n");break;}right_revolve(arr1,len,k);if(strcmp(arr1,arr2)==0){printf("1\n");break;}k--;}if(k==0){printf("0\n");}return 0;}


原创粉丝点击