直接看代码↓
开门见山的说:
abcde a1
cdeab a2
想判断a2是否为a1的旋转字符串
只需在
a2后面再自加一段a2
cdeab cdeab
那么我们总能判断出a1,是否为自加后的字符串的子串
很明显在判断之前要比较两个字符串的长度,如果连长度都不相等,那肯定不是旋转后的字符串
int le = strlen(a2);
int lp = strlen(a1);if (le!=lp)
{
return 0;
}
需要用到的函数有
strncat() 追加字符串
strstr() 判断是否为子串,返回值为char*,如果不是则char*为空指针
上码:
#include<stdio.h>
#include<assert.h>
#include<string.h>
int is_m( char* a1, char* a2)
{
assert(a1 && a2);
int le = strlen(a2);
int lp = strlen(a1);
if (le!=lp)
{
return 0;
}
strncat(a2, a2, strlen(a2));
char* po = strstr(a2, a1);
if (po == NULL)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
char a1[30] = { "abcde" };
char a2[30] = { "cdeab" };
int rt = is_m(a1,a2);
if (rt == 1)
{
printf("yes\n");
}
else if (rt == 0)
{
printf("no\n");
}
return 0;
}
哈,谢谢各位同志的阅读,然后呢如果觉得本文对您有所帮助的话,还给个免费的赞吧
Thanks♪(・ω・)ノ
(期待一下,要是有分享和收藏更好啦)