判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串。

来源:互联网 发布:安卓的重置网络设置 编辑:程序博客网 时间:2024/05/16 14:23
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>void show(char arr[], int len)  //打印数组 char arr[]表示数组,int len表示数组长度{assert(len > 0);int i = 0;for (i = 0; i < len; i++){printf("%c", arr[i]);}}void swap(char *x, char *y){*x ^= *y;*y ^= *x;*x ^= *y;}void left_reverse(char arr[], int len, int reverse_num)//左旋字符串函数, char arr[]表示数组,int len表示数组长度{                                                   //int reverse_num 代表左旋字符串的个数assert(len > 0);int i = 0;int n = 0;char temp;for (n = 0; n < reverse_num; n++){temp = arr[0];for (i = 0; i < len; i++){arr[i] = arr[i + 1];}arr[len - 1] = temp;}}void right_reverse(char arr[], int len, int reverse_num){assert(len > 0);int start = 0;int end = len - 1;int i = 0;int j = 1;int end1 = len - 1;for (i = 0; i < reverse_num; i++){int start = 0;int end = strlen(arr) - 1;int start1 = 1;int end1 = end;while (start < end){swap(&arr[start], &arr[end]);start++;end--;}while (start1 < end1){swap(&arr[start1], &arr[end1]);start1++;end1--;}}}int judge(char arr[], char str[], int len, int len1){assert(len > 0);assert(len1 > 0);if (strncmp(arr, str, len) == 0){return 1;}else{return 0;}}int main(){char array[] = "AEBCD";char str[] = "abcde";int len = strlen(array);int len1;int number = 0;int i = 0;printf("请输入要判断的字符串:");scanf("%s", str);printf("\n");len1 = strlen(str);printf("请输入一个字符串:");scanf("%s", array);printf("\n");printf("please enter right_number:");scanf("%d", &number);printf("右旋之前的字符:");show(array, len);printf("\n");printf("右旋之后的字符:");right_reverse(array, len, number);show(array, len);printf("\n");if (judge(array, str, len, len1)){printf("该字符串是另一个字符串右旋之后的字符串");}else{printf("该字符串不是另一个字符串右旋之后的字符串");}printf("\n");printf("\n");printf("请输入一个字符串");scanf("%s", array);printf("\n");printf("please enter left_number:");scanf("%d", &number);printf("左旋之前的字符:");show(array, len);printf("\n");left_reverse(array, len, number);printf("左旋之后的字符:");show(array, len);printf("\n");if (judge(array, str, len, len1)){printf("该字符串是另一个字符串左旋之后的字符串");}else{printf("该字符串不是另一个字符串左旋之后的字符串");}printf("\n");system("pause");return 0;}

0 0