C程序计算模式字符串的出现次数

标签 c string

给定源字符串S和模式字符串P,计算模式字符串P在源字符串S中出现的次数。

输入格式: 第一行是源字符串 S s.t。 1 <= |S| <= 8192 个字符 第二行是模式字符串 P st。 1 <= |P| <= 8192 个字符

输出格式: 输出一个整数,其中包含模式字符串 P 在源字符串 S 中出现的次数。

这段代码有什么问题吗?

#include<stdio.h>
int main()
{
 int i=0,j=0,k=0,loss=0,noss=0;
 char ms[8192],ss[8192];
 scanf("%s",&ms);
 scanf("%s",&ss);
 while(ss[loss]!='\0')
  {
    loss=loss+1;

      }
     while(ms[i]!='\0')
      {
       j=0;
       if(ms[i]==ss[0])
        {
          j=j+1;
          k=i+1;
          while(ss[j]!='\0')
           {
             if(ms[k]==ss[j])
                j++;
             else
                break;
           }
          if(j==loss-1)noss++;
        }
       i++;
      }
      printf("%d",noss);
      return(0);

     }

测试用例 1

输入:密西西比州 伊西

预期输出:2

实际输出:2

测试用例 2

输入:瓦加杜古 欧

预期输出:3

实际输出:0

最佳答案

顺便说一句,只是为了答案,试试这个。查看第 25-28 行和第 32 行的区别。

 18        if(ms[i]==ss[0])
 19         {
 20           j=j+1;
 21           k=i+1;
 22           while(ss[j]!='\0')
 23            {
 24              if(ms[k]==ss[j])
 25 {
 26                 j++;
 27 k++;
 28 }
 29              else
 30                 break;
 31            }
 32 if(j==loss)noss++;
 33         }

关于C程序计算模式字符串的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992338/

相关文章:

python - 将字符串作为资源嵌入

c++ - 实现文件中的命名空间以对 const 字符串文字进行分组 - 好/坏?

c - 用cudaEvent_t测CPU时间靠谱吗?

c - 警告 : Implicit declaration error

sql - 在大型插入语句中使用绑定(bind)变量

javascript - JS : Math. 数组随机

c++ - 使用计数器模式用 SHA256 加密数据是否聪明?

c - 如果多个线程并行处理,如何维护数据包的顺序?

javascript - 有没有办法从单个字符中获取 charCode?

java - 字符串最后一个字符的 String.format() 格式