洛谷P1308 [NOIP2011 普及组] 统计单词数C语言

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
    char check[11];
    char str[1000001];

    int f_num = 0;
    int count = 0;
    int i = 0;
    int j = 0;
    int p = 1;

    gets(check);
    gets(str);

    int length_S, length_C;
    length_C = strlen(check);
    length_S = strlen(str);

    for (i = 0; i < length_C; i++){
        check[i] = tolower(check[i]);
    }
    for (i = 0; i < length_S; i++){
        str[i] = tolower(str[i]);
    }

    for (i = 0; i < length_S; i++){
        // 对每一个单词的判断 共三种情况:1、要么第一个字母在最开头且单词结尾为空格,
        //                             2、要么在末尾即单词开头字母的位置为b的长度减去a的长度且单词前一位为空格,
        //                             3、要么单词在中间他的左边和右边同时为空格。 同时默认次单词长度和要找的a单词长度相等,若不等,则肯定不是要找的单词。
        if (i == 0 && str[i+length_C] == ' ' || i == length_S-length_C && str[length_S-length_C-1] == ' ' || str[i-1] == ' ' && str[i+length_C] == ' '){
            for (j = 0; j < length_C; j++){
                if (str[i+j] == check[j]){
                    p = 1;
                } else {
                    p = 0;
                    break; //一定要break啊!!!不然下一次匹配成功了,p是1啦,就出现结果啦!!!
                }
            }
            if (p){
                count++;
                if (count == 1){
                    f_num = i;
                }
            }
        }
    }

    if (count == 0){
        printf("-1");
    } else {
        printf("%d %d", count, f_num);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GospeLLLLLL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值