`
pengmj
  • 浏览: 24590 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

模式的快速匹配与查找

 
阅读更多

在做APP或者游戏的时候经常会遇到这样的情况:不同的渠道,不同的省份,不同的运营商会返回不同的值,还有默认全渠道是给什么值,默认全省份或者全运营商给什么值,我们看下面简单的图。这样一种需求我们该怎么快速的做出匹配呢?



 

 

通过观察可以得到一个规律,需要匹配的字段(上图中的“渠道”,“省份”,“运营商”)要么是一个确定的数,要么是ALL(表示所有)。那么我们把上图转换成下面的这张:(这个图和上面的图不是一一对应哦。)



 

其实就是把上面的固定值替换成1,ALL替换成0。3个匹配字段,2个不同的值,根据数学的排列组合,总共的模式有2的3次方=8种:



 

这些组合还有一些顺序,比如最后匹配的是最模糊的(0,0,0),最上面的是最精确的(1,1,1),这个顺序可以根据业务需求来。

好,默认已经设计好了,下面来看我们怎么在程序中使用。

为了更加形象我还是举前面的例子:

1、首先配置需要匹配的数据:



 

 

加载到内存的MAP中,存放的格式(数据之间用下划线“_”隔开)如下:



 

2、假设现在有一个客户端请求过来,对应的数据,渠道:QD2;省份;ZJ;运营商是:YD。然后根据上面的8种模式以及顺序,在内存中组合(具体的组合方法有很多中,比如:把模式定义成二维数组通过循环把对应的数据填进去,遇到0则跳过,1则添加对应的数据)成下面的形式把(放到List里面):



 

3、通过List循环匹配第1步中的MAP,就能快速找打了,像例子中的第一条就匹配上了获得了值100,匹配上了之后立马跳出循环。

总结,这种模式可以扩展多个字段,字段越多模式就越多,每种模式的顺序需要根据具体的业务需求来确定。

欢迎访问个人网站pengmj.com,更多原创文章可阅!

  • 大小: 4.4 KB
  • 大小: 2.4 KB
  • 大小: 1.2 KB
  • 大小: 3.3 KB
  • 大小: 1.8 KB
  • 大小: 1.2 KB
0
0
分享到:
评论

相关推荐

    模式匹配、字符串查找

    模式匹配通常指的是一个算法,它在输入字符串(或文本)中查找与给定模式相匹配的子字符串。这个模式可以是一个简单的字符序列,也可以是一个复杂的正则表达式。例如,在编程中,我们经常使用模式匹配来验证用户输入...

    模式匹配的KMP算法

    模式匹配的KMP算法的优点是具有线性的查找时间,查找效率高。该算法广泛应用于文本编辑程序、信息检索系统、文字编辑程序、问答系统、自然语言翻译系统等领域。 在本课程设计中,我们使用Visual C++6.0语言,...

    单模式快速匹配算法 BMH

    单模式快速匹配算法,也称为Boyer-Moore-Horspool (BMH) 算法,是一种在文本中高效查找子串出现位置的算法。它由Stephen Cole Boyer和Robert Morris于1977年提出,后来由Richard Horspool进行了改进。这种算法在处理...

    文学研究助手(字符串的查找\模式匹配\KMP算法)

    《文学研究助手——深入解析KMP算法在字符串查找与模式匹配中的应用》 在文学研究领域,高效地处理文本信息是至关重要的。本项目“文学研究助手”正是为解决这一问题而设计,它利用C语言实现,核心算法是著名的KMP...

    AC-BM 多模式匹配算法

    AC-BM(Aho-Corasick-BM)算法是一种结合了Aho-Corasick算法和Boyer-Moore算法的字符串匹配方法,主要用于在一个大文本串中高效地查找多个模式串。这种算法提高了在大量模式下搜索文本的效率,减少了不必要的比较...

    c char 串 模式与匹配算法

    9. `Index(S, T, pos)`:查找字符串S从位置pos开始的子串中,第一个与T相同的子串的起始位置。 模式匹配算法是字符串处理中的一个重要部分,主要用于在主串中寻找特定模式(子串)的出现位置。常见的模式匹配算法有...

    一种存储优化的多模式匹配算法

    在AC自动机中,Trie树被用来组织所有模式串,使得在匹配过程中能快速找到模式串的后缀,提高匹配效率。在SMMA中,Trie树的构建更加动态和紧凑,只保存有效的路径信息。 【状态转移与匹配长度】 在自动机中,状态...

    基于字符串模式匹配算法的病毒感染检测问题 实验四(源代码+实验报告)

    字符串模式匹配算法的主要目标是在一个大文本(主字符串)中查找是否存在一个或多个小的已知模式(子字符串)。这个过程中,有多种经典算法可以采用,例如: 1. **朴素匹配算法**:最基础的匹配方法,逐个字符比较...

    IP搜索--BM模式匹配 代码

    当模式字符串中的某个字符与文本字符串中的对应位置字符不匹配时,可以根据模式字符串中该字符的位置和文本字符串中找到的最后一个匹配字符的位置,计算出一个偏移量,使得模式字符串可以向前跳跃。偏移量等于模式...

    入侵检测系统_模式匹配_入侵检测_

    因此,IDS会采用各种策略提高匹配效率,如哈希表、AC自动机、Bloom Filter等数据结构,实现快速查找。 5. **误报和漏报**:模式匹配可能会面临误报(将正常行为识别为攻击)和漏报(未能识别真正的攻击)的问题。...

    排序+匹配+查找算法

    在IT领域,排序、匹配和查找是数据处理与算法设计中的基础且重要的组成部分。下面将分别详细介绍这些概念以及相关的算法。 **排序算法**是计算机科学中处理数组或列表的一种常见方法,目标是按照特定顺序(如升序或...

    支持通配符的模式匹配算法

    通配符模式匹配是计算机科学中的一个重要概念,特别是在文本处理、搜索算法以及文件系统路径匹配等领域广泛应用。...在实际应用中,这种算法能够帮助用户快速查找符合特定模式的文本,提高数据处理的效率。

    数据结构之模式匹配算法 (数据结构)

    总结,模式匹配算法是数据结构中的重要组成部分,通过巧妙的数据结构和算法设计,我们可以有效地解决在大量数据中查找特定模式的问题。理解并掌握这些算法,对于提升软件系统的性能和解决实际问题具有重要意义。

    单模式匹配算法 BM

    例如,模式串为"ABCD",文本串为"ABCDEFGHABCD",在查找过程中,当"ABCD"和"AB"不匹配时,我们可以看到"A"在模式串中再次出现的位置是0,所以可以直接将模式串向右移动3位(4 - 1)。 **好后缀规则** 是BM算法的第...

    Wu-Manber多模式匹配算法源码

    总之,Wu-Manber多模式匹配算法提供了一种高效的解决方案,适用于在大规模文本中同时查找多个模式字符串的场景。在实际应用中,这种算法广泛应用于信息安全、基因序列比对、文本挖掘等领域。本压缩包中的源代码提供...

    字符串的多模式匹配算法

    字符串的多模式匹配算法在计算机科学中是一种高效处理多个模式串与一个长文本进行匹配的技术。这个主题在信息检索、生物信息学、数据挖掘等领域有着广泛的应用。在本篇文章中,我们将深入探讨这一算法,特别是Aho-...

    多模式匹配源码,支持中文匹配

    2. **后缀数组**:通过构建后缀数组,我们可以快速地找到主串中的所有子串,然后与模式串进行比较,找出匹配的部分。 3. **Bitvector技术**:利用位运算提高查找效率,尤其是在内存充足的情况下,可以达到非常高的...

    使用自动机的高效多模式匹配算法

    多模式匹配是指在一个长文本中查找多个预定义的模式(也称为模式串或关键词)。传统的单模式匹配算法如KMP、Boyer-Moore或Rabin-Karp已经相当高效,但当面临大量模式时,它们的效率会显著下降。因此,多模式匹配算法...

Global site tag (gtag.js) - Google Analytics