皮卡丘的叫声是? 字符串里某个字符的数量

皮卡丘的叫声是?

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

 

皮卡丘的叫声大家听过吗?当然是“pika”,“pikapi”,“pikachu”,“pikapika”等等,其中“pikapi”指的是小智哦(不要问我为什么懂皮卡丘语),现在皮卡丘说了好长一段话,请你找出皮卡丘叫了多少次“pikachu”。

Input

输入数据有多组,到EOF结束。

每组数据输入一段皮卡丘的叫声,叫声用字符串来表示,字符串中含逗号,不含空格,长度不超过1000。

Output

对于每组输入,输出一个整数n,表示叫声中“pikachu”的数量。

Example Input
pika,pikachu
pikapika,chupi
pikachu,pikapi,pipikachu
Example Output
1
0
2

法一:


#include<stdio.h>
#include<string.h>
int main(void)
{
    char str[1002], count;
    int i, n;


    while(gets(str))
    {
        n = strlen(str);
        count = 0;
        for(i = 0; i < n - 5; i++)
        {
            if(str[i] == 'p')
            {
                if(str[i + 1] == 'i')
                {
                    if(str[i + 2] == 'k')
                    {
                        if(str[i + 3] == 'a')
                        {
                            if(str[i + 4] == 'c')
                            {
                                if(str[i + 5] == 'h')
                                {
                                    if(str[i + 6] == 'u')
                                    {
                                        count++;
                                    }
                                }
                            }
                        }


                    }
                }
            }
        }
        printf("%d\n", count);
    }
    return 0;
}


法二:


#include<stdio.h>
#include<string.h>
int main(void)
{
    char str[1002], s[8] = "pikachu";
    int i, n, k, j, count;


    while(gets(str))
    {
        n = strlen(str);
        k = 0;
        count = 0;
        for(i = 0; i < n; i++)
        {
             if(str[i] == s[0])
          {
              for(j = i + 1, k = 1; k <= 6 && j <= n - 1; k++, j++)   或   for(j = i + 1, k = 1; k <= 6 && j <= n - 1; ++k, ++j)   
              {
                  if(str[j] != s[k])
                  {
                      break;
                  }
              }
                if(k == 7)   因为当k == 7 时 刚好不符合 条件, 跳出 for 循环
             {
                count++;
             }
         }


          }


        printf("%d\n", count);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值