标题:一道字符串匹配的题目,一直wrong answer,求指出一下错误在哪!
只看楼主
x三生石x
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2018-10-27
结帖率:70%
已结贴  问题点数:20 回复次数:2 
一道字符串匹配的题目,一直wrong answer,求指出一下错误在哪!
Input
第一行是一个整数N,说明有多少个测试用例。
接下来是N个测试用例,每个测试用例占2行:第一行是字符串S,第二行是字符串T,字符串中不含空格。  1 ≤ strlen(S) , strlen( T ) ≤ 10000

Output
对每个测试用例,输出一行结果:是否子串,是则输出"yes" ,否则输出 "no"。

代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        char a[10005]={},b[10005]={};
        scanf("%s",&a);
        scanf("%s",&b);
        int t=strlen(a)-strlen(b);
        int d=strlen(b);
        if(t<0){
            printf("no\n");
        }
        else{
            int j=0,y=1;
            for(int i=0;i<strlen(a);i++){

                if(a[i]==b[j]){
                    j++;
                    if(j==d){
                    printf("yes\n");
                    y=0;
                    break;
                    }
                }
                else{
                    j=0;
                    if(a[i]==b[j]){
                        j++;
                    }
                }
            }
            if(y){
                printf("no\n");
            }
        }
    }
    return 0;
}

wrong answer。。。求指出错误出在哪里?
搜索更多相关主题的帖子: 字符串 wrong answer strlen int 
2019-03-02 18:31
x三生石x
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2018-10-27
得分:0 
没人帮忙看看吗
2019-03-02 21:49
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:20 
看代码真的太费劲了,要不你看下我这个,试了下,没发现什么问题
程序代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    unsigned n;

    printf("输入测试次数: ");
    scanf("%u", &n);

    while (n--)
    {
        char a[10001] = { 0 }, b[10001] = { 0 };

        printf("输入两个字符串:\n");
        scanf("%s%s", a, b);

        size_t len_a = strlen(a), len_b = strlen(b);

        for (size_t i = 0; i < len_a - len_b + 1; i++)
        {
            size_t j = 0;

            while (j < len_b && a[i + j] == b[j])
                ++j;

            if (j == len_b)
            {
                printf("\nyes\n\n\n");
                break;
            }
            else if (i == len_a - len_b)
            {
                printf("\nno\n\n\n");
                break;
            }
        }
    }

    return 0;
}


[此贴子已经被作者于2019-3-3 10:01编辑过]

2019-03-03 09:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493379-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.113427 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved