解题思路:
本题是要给定两个字符串arr1和arr2,判断arr1经过任意次循环操作之后,是否包含arr2的子字符串。由于循环操作是将字符串最后一位字符转移到第一位,所以通过有限次循环之后,arr1字符串会转变为最初的字符串,所以可以先将arr1字符串先首尾相连形成一个新的字符串,长度为2 * strlen( arr1 ),所有循环操作之后得到的字符串均为该字符串的子字符串,只需要判断arr2是否为新字符串子字符串即可。
注意事项:
在连接字符串时,string.h库函数包含了strcat具有连接字符串的功能,但由于其特殊属性不能连接字符串自身,所以需要自己通过循环操作实现,然后用strstr函数判断即可。
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
char ch[200000] = { 0 };
char ch1[100000] = { 0 };
scanf("%s %s", ch, ch1);
//实现将一个一样的字符串连接在给定字符串之后
int len = strlen(ch);
int i = 0;
for (i = 0; i < len; i++)
{
ch[len + i] = ch[i];
}
ch[2 * len] = '\0';
//判断ch1数组是否为ch字符串的子串
char* p = strstr(ch, ch1);
if (p == NULL)
{
printf("false\n");
}
else
{
printf("true\n");
}
return 0;
}
0.0分
1 人评分
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:682 |
不容易系列2 (C语言代码)浏览:631 |
C语言考试练习题_排列 (C语言代码)浏览:756 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1429 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1070 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:642 |
1011题解浏览:810 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:584 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:576 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:589 |