解题思路:
本题是要给定两个字符串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语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:568 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1396 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:562 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:570 |
1014题解浏览:524 |
Hello, world! (C语言代码)浏览:916 |
剪刀石头布 (C语言代码)浏览:1519 |
输入输出格式练习 (C语言代码)浏览:883 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:594 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:669 |