豪仕知识网--知识就是力量!

微信
手机版
生活常识

海量字符串中查找某个匹配的字符串方法-查找字符串中指定字符串的位置

作者 :东方不败 2024-01-06 20:27:42 围观 : 评论

海量字符串中查找某个匹配的字符串方法-查找字符串中指定字符串的位置

豪士君测试所用平台

现在还有好多人不知道海量字符串中查找某个匹配的字符串方法,接下来我们小编就来分享一下。

◐◐◐◐●☛█▼▲豪仕知识网███████http://www.haOZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

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

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

◐◐◐◐●☛█▼▲豪仕知识网███████豪仕知识网HTtp://www.haoZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

方法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)

◐◐◐◐●☛█▼▲豪仕知识网HT●☛█▼▲◐◐◐◐●☛█▼▲

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

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

◐◐◐◐●☛█▼▲豪仕知识网HT●☛█▼▲◐◐◐◐●☛█▼▲

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

豪仕知识网http://www.haoz.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

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

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

◐◐◐◐●☛█▼▲豪仕知识网███████豪仕知识网HTtp://www.haoZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

方法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)

◐◐◐◐●☛█▼▲豪仕知识网███████豪仕知识网HTtp://www.haoZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

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

●☛█▼▲豪仕知识网◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲

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

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

◐◐◐◐●☛█▼▲豪仕知识网███████豪仕知识http://www.Haoz.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

本文海量字符串中查找某个匹配的字符串方法整理到此结束,字数约2551字,希望对大家有所帮助。豪仕知识网往后会继续推荐海量字符串中查找某个匹配的字符串方法相关内容。

HTTP://WWW.haoz.net豪仕知识网采集不好玩哦◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐撒旦法师打发斯蒂芬

相关文章