C語言:判斷字串是否由已知字串旋轉得到。
阿新 • • 發佈:2021-01-24
用到的字串 函式:
strstr(str1,str2);在str1中查詢str2子串,若存在,返回str1中該字串的首元素地址;若不存在,返回NULL。
strcat (str1,str2);將str2銜接到str1之後,但不能銜接str1本身。
strncat(str1,str2,n);將str2的n個字元 銜接到str1之後,可以銜接str1本身。
#include<stdio.h>
#include<string.h>
//判斷arr2是否為arr1旋轉字串得到的。
//abcdefabcdef 原理:在str1後面追加一個str1
//若arr2是它的子串,則arr2是為arr1旋轉字串得到的。
int is_left_remove(char* str1, char* str2)
{
int len = strlen(str1);
int len2 = strlen(str2);
if (len!=len2)
{
return 0;
}
strncat(str1, str1, 6);//在str1後面追加一個str1
char* ret = strstr(str1, str2);
if (ret==NULL)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
char arr1[20] = "abcdef" ;
char arr2[] = "cdefba";
int ret = is_left_remove(arr1, arr2);
if (ret==1)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}