私信TA

用户名:dotcpp0784625

访问量:146

签 名:

等  级
排  名 2348
经  验 2319
参赛次数 0
文章发表 19
年  龄 20
在职情况 学生
学  校 北京理工大学
专  业 弹药工程与爆炸技术

  自我简介:

解题思路:

本题是要给定两个字符串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 人评分

  评论区

  • «
  • »