判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串。
2016-11-11 17:04
323 查看
#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; }
相关文章推荐
- C语言:判断一个字符串是否为另外一个字符串旋转之后的字符串。(左旋右旋、求子串)
- 判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串
- C语言:判断一个字符串是否为另外一个字符串旋转之后的字符串。(左旋右旋、求子串)
- 判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- C语言程序-判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- C语言 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.