19.字符串移位包含问题

描述

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。

给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。

输入一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。输出如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。样例输入
AABCD CDAA
样例输出

true

#include <stdio.h>
#include <string.h>
#define N 30
char A[N], B[N];


int isContained(char* s, char* t)
{
    int i, j, ok, len1 = strlen(s), len2 = strlen(t);
    if (len1 < len2)
        return 0;
    for (i = 0; i < len1; i++)
    {
        ok = 1;
        for (j = 0; j < len2; j++)
        {
            if (s[(i + j) % len1] != t[j])
            {
                ok = 0;
                break;
            }
        }
        if (ok)
            return 1;
    }
    return 0;
}


int main()
{
    scanf("%s%s", A, B);
    if (isContained(A, B) || isContained(B, A)) printf("true\n");
    else printf("false\n");
    return 0;
}

全部评论

相关推荐

01-24 12:50
门头沟学院 C++
投票
菜狗二号:还有啥想的 指定国有行啊,去了就开始幸福美满的生活了,选华子不是折腾自己么,最终财富积累度是差不多的,但是幸福指数是相差甚远的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务