zoukankan      html  css  js  c++  java
  • 串的匹配算法之朴素算法

      朴素算法,即不对子串进行预处理。

      利用朴素算法我们可以在主串中寻找子串出现的次数。

    代码一:

     

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 int Count(char *p, char *q)
     5 {
     6     int i, k, num = 0;
     7     unsigned int j;
     8     for (i = 0; p[i] != ''; i++)
     9     {
    10         for (k = i, j = 0; p[k] == q[j] && j < strlen(q); j++, k++)
    11             if (j == strlen(q) - 1)
    12                 num++;
    13     }
    14     return num;
    15 }
    16 int main()
    17 {
    18     char a[50], b[10];
    19     int n;
    20     printf("请输入主串: ");
    21     gets_s(a,50);
    22     printf("请输入子串: ");
    23     gets_s(b,10);
    24     n = Count(a, b);
    25     printf("子串在主串中出现了%d次", n);
    26 
    27 return 0;
    28 
    29 }

      代码二:

    定义两个指针p,q;p指向主串首地址,q指向子串首地址。

    如果对应的字符相等,那么++p,++q,即两个指针都向后移一个单位再继续比较*p和*q,

    否则q回到子串的首地址,只把指针p向后移动一个单位。

    依次类推,如果*q==‘’,说明子串已经终止,子串在主串中出现的次数加1,直到主串终止为止。

      

     1 #include <stdio.h>
     2 
     3 
     4 int Count(char  *str, char  *substr)
     5 {
     6 int n = 0;
     7 char *p, *q;
     8 
     9 while (*str)
    10 {
    11 p = str;
    12 q = substr;
    13 while (*q)
    14 {
    15 if (*p == *q)
    16 {
    17 ++p;
    18 ++q;
    19 }
    20 else
    21 {
    22 break;
    23 }
    24 
    25 }
    26 if (*q == '' )
    27 {
    28 ++n;
    29 }
    30 ++str;
    31 }
    32 return n;
    33 }
    34 
    35 int
    36 main()
    37 {
    38 char str[50], substr[10];
    39 int n;
    40 printf("请输入主串:");
    41 gets_s(str);
    42 printf("请输入子串:");
    43 gets_s(substr);
    44 n = Count(str, substr);
    45 printf("子串在主串中出现了%d次", n);
    46 
    47 return 0;
    48 }

     

  • 相关阅读:
    opencvadd加法
    opencvcopyMakeBorder拓展边界
    opencvcountNonZero计算非0值个数
    opencvcompare比较
    opencvputText绘字
    opencvaddWeighted加法
    opencvconvertScaleAbs位深转化函数
    opencvsplit分离通道
    软件测试的人际关系(转载)
    Struts 1.3.10 jar包官网下载地址
  • 原文地址:https://www.cnblogs.com/mwq1024/p/10581689.html
Copyright © 2011-2022 走看看