R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。 R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。 要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。 关于作者: 张丹,分析师/程序员/Quant: R,Java,Nodejs blog: http://blog.fens.me email: bsspirit@gmail.com 转载请注明出处: http://blog.fens.me/r-kmp/ 前言 文字匹配是字符符处理操作时,最常用到的一种方法。比如我们想从一段长文本中,找到是否有我想要的词,可以用于在图书中用关键词进行搜索,这样就可以定位到具体的位置。当文本长度巨大,且匹配字符串长度过长时,这种匹配就会有效率问题,很变的很慢。 那么我们可以用KMP的算法思路,在提升文字精确匹配的效率。本文代码:https://github.com/bsspirit/r-string-match 目录 字符串匹配:暴力破解法 KMP算法解释和实现 KMP和暴力破解算法对比 1. 字符串匹配:暴力破解法 一般的字符串匹配算法,是将 2个字符串每个字符挨个进行比较,相当于是把每个字符都比较了一遍,做了对所有字符的组合,这样操作导致的时间复杂度是O(m*n),也就是 2 个字符串长度的积,俗称暴力解法。 我们设定原始字符串为:ABDABDZ ABCED,匹配字符串为:ABC。直接使用暴力法进行字符串匹配。 首先,建立暴力破解的字符串匹配函数bad_match(),包括4个参数。 txt,原始文本的字符串 pattern,匹配的字符串 n,用于取匹配前几个,默认为0,表示全匹配 LOGGER,用于显示日志 # 清空环境变量 > rm(list=ls()) # 设置运行目录 > setwd("C:/work/R/text") # 建立字符串匹配函数:暴力破解法 > # 暴力破解法 > baoli_match