• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

海量字符串中查找某个匹配的字符串方法

时间:2015年04月02日 15:25:49    来源:魔法猪系统重装大师官网    人气:4619

处理在海量个字符串中找到某个字符串的方法

今天收到intel面试,问我一个问题,如何在一万个字符串中找到某个相关的字符串?当时感觉打得不好,回头自己又想了想,现写下感想。

方法1:最笨的方法,一个一个的遍历

方法2:采用划分子集的方法,首先以第1个字符进行划分,将a到z开头的字符串划分到不同的子集中,然后比较,接着,再到相应子集中进行划分,在比 较,一直到找到为止,这个方法相较于方法1是:1,相对于每次比较的字串而言,所有首字母不相同的不再进行比较,比方说happy,肯定去以h为首字母的 集合中进行比较,然后对于子串appy,只要到所有子串以a为首字母的集合中进行比较,如此下去,时间花费主要在于划分子集上,而划分子集的次数又跟 happy的长度有关系,所以只需划分5次即可,所以时间复杂度是O(mn),m是要寻找字符串的长度,n是原始字符串集合大小。

方法3:采用正则表达式匹配,比如还是happy,假如将原始集合中的所有字符串和正则表达式pattern = ^h[A-Za-z]+y$进行匹配,接着在对app这个子串和子集合中进行正则表达式匹,pattern=^a[A-Za-z]+p$,最后对p进行匹配即可,时间复杂度O(mn)

方法4:采用Hadoop海量数据处理,将海量字符串分到不同的map任务中,每个任务,进行对字符串在相应的node上进行查找,接着对于所有的map的结果交给reduce任务分析,这仅仅是个方案,具体时间复杂度的话,看你有多少个map任务了。

方案5:采用trie树,对这海量字符串构建一颗trie树,然后在trie树中查找该字符串,trie树的优势在于对于前缀一样的字符串都可以在一次匹配查找中得到,时间复杂度在于构建trie树复杂度,和trie树的高度。

方案6:可以采用编译原理学到的自动机,最近再看编译原理突然想到,不过对于海量数据,具体情况怎么样,还得我继续探索~~

海量,字符串,中,查找,某个,匹配,的,方法,处理,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部