您的位置:首页 > 其它

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

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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐