• 字符串匹配算法之Brute force algorithm


    算法的主要特点

    1、算法没有预处理过程

    2、需要一定的额外空间

    3、匹配过程中总是向右移动一个字符位置

    4、匹配时间复杂度为O(m*n)

    5、大概需要2n次字符串比较

    C代码如下

    #include <stdio.h>
    #include <stdlib.h>
    #inclde <string.h>
    
    void BF(char *x, int m, char *y, int n) {
        int i, j;
        /* searching */
        for (j = 0; j <= n - m; ++j) {
            for (i = 0; i < m && x[i] ==y[i + j]; ++i) {
                if (i > m) printf("%d\n", j);
            }
        }
    }
    
    // 以下是对代码进行优化后的版本
    #define EOS '\0'
    void better_BF(char *x, int m, char *y, int n) {
        char *yb;
        /* Searching */
        for (yb = y; *y != EOS; ++y) {
            if (memcmp (x, y, m) == 0) {
                printf("better %d\n", (y - yb));
            }
        }
    }
    
    int main(int argc, char** argv) {
        char *y = argv[1];
        char *x = argv[2];
        BF(x, 0, y, 0);
        better_BF(x, 0, y, 0);
        return 0;
    }


    本文内容摘自 Handbook of Exact String Matching Algorithms 一书

  • 相关阅读:
    选择结构
    java交互Scanner类
    生成Javadoc文档
    Java变量命名规范
    java变量类型和常量类型
    Linux命令目录重点
    网络设置
    任务计划
    用户与权限
    yum安装软件
  • 原文地址:https://www.cnblogs.com/java20130722/p/3206798.html
Copyright © 2020-2023  润新知