如何匹配某字符串,字符串匹配怎么输入

首页 > 实用技巧 > 作者:YD1662024-02-03 04:14:10

作者:京东零售 李文涛

一、简介1.1 Background

字符串匹配在文本处理的广泛领域中是一个非常重要的主题。字符串匹配包括在文本中找到一个,或者更一般地说,所有字符串(通常来讲称其为模式)的出现。该模式表示为p=p[0..m-1];它的长度等于m。文本表示为t=t[0..n-1],它的长度等于n。两个字符串都建立在一个有限的字符集上。

一个比较常见的字符串匹配方法工作原理如下。在一个大小通常等于m的窗口帮助下扫描文本。首先将窗口和文本的左端对齐,然后将窗口的字符与文本中的字符进行比较,这一特定的工作被称为尝试,在完全匹配或不匹配之后,将窗口移到右侧。继续重复同样的过程,直到窗口的右端超过文本的右端,一般称为滑动窗口机制。

如何匹配某字符串,字符串匹配怎么输入(1)

如何匹配某字符串,字符串匹配怎么输入(2)

如何匹配某字符串,字符串匹配怎么输入(3)

1.2 Brute force

BF算法检查文本中0到n-m之间的所有位置,是否有模式从那里开始出现。然后,在每次尝试之后,它将模式串向右移动一个位置。

BF算法不需要预处理阶段,除了模式和文本之外,还需要一个恒定的额外空间。在搜索阶段,文本字符比较可以以任何顺序进行。该搜索阶段的时间复杂度为O(mn)。

public static int strMatch(String s, String p){ int i = 0, j = 0; while(i < s.length() && j < p.length()){ if(s.charAt(i) == p.charAt(j)){ i ; j ; }else{ i = i - j 1; j = 0; } if (j == p.length()){ return i - j; } } return -1; } 二、KMP

先回顾下brute force中匹配的情况。我们在文本串BBC#ABCDAB$ABCDABCDABDE中查找模式串ABCDABD,文本串中第1个字符“B”与模式串中第1个字符“A”不匹配,所以我们将模式传后移一位。

如何匹配某字符串,字符串匹配怎么输入(4)

首页 12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.