
字符串处理
施工中请绕行
喜欢研究底层技术,编译原理,操作系统技术,数据库引擎实现原理。2012年校园招聘进入腾讯北分云平台部,从事终端开发职位。
展开
-
KMP算法
前两天数据结构课上讲了字符串匹配,老师提了下KMP算法,但是没讲,让有兴趣的同学自己研究。。以前就听说过KMP挺强大也挺难理解的,出于兴趣,下课回寝翻开那本9快钱买的盗版算法导论自己看了一下午,终于理解了KMP的精华,发现它的原理并不是很复杂,只不过书上那些术语太专业了。。让人一时搞不懂什么含义,从而降低了KMP的可理解性。。。所以下面就用比较朴素的语句描述下我对KMP的理解。。。 KMP是一个高效的算法,时间复杂度O(n+m)级,是计算机科学界神一级的人物高德纳和原创 2010-09-28 21:49:00 · 1227 阅读 · 0 评论 -
POJ2001解题报告
Shortest PrefixesTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 6143 Accepted: 2512DescriptionA prefix of a string is a substring starting at the beginning of the given string. The prefixes of "carbon" are: "c", "ca", "car", "carb", "carbo", and原创 2011-01-26 17:02:00 · 908 阅读 · 0 评论 -
POJ 2004解题报告
Mix and BuildTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 3246 Accepted: 963Case Time Limit: 2000MS Special JudgeDescriptionIn this problem, you are given a list of words (sequence of lower case letters). From this list, find the longest chain原创 2011-02-28 20:48:00 · 1341 阅读 · 1 评论 -
一个字符串的面试题
题目: 有一字符串由M个单词组成单词之间有空格隔开(只有空格,没有其他标点符号),有N个关键字,现在要在字符串中找出包含N个关键字(每个关键字至少出现一次,没有说要不要按什么顺序)的最短子串。函数原型:String extractSummary(String description, String[] keywords)思路:想了一阵,想出了一个方法,设主串长n 关键字长m 则复杂度大致为nlogm举个例子说下过程:例如主串: ab ba ad ba ab ef ba ab ef ad关键字集原创 2011-04-02 22:02:00 · 972 阅读 · 0 评论 -
各种字符串Hash函数比较
常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。 常用字符串哈希函数有 BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几转载 2011-10-27 15:09:11 · 946 阅读 · 0 评论 -
AC自动机算法
AC自动机算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一,由Alfred V.Aho发明,他还是编译原理红龙书的作者之一。AC自动机算法是字典树和KMP算法的结合,主要用于多字符串匹配,比如给定若干个单词,再给定一篇文章,问在文章中出现了多少个单词。AC自动机算法可以快速解决此类问题。 例题:hdu 2222Keywords SearchTime Limit: 20原创 2012-08-12 17:03:39 · 1211 阅读 · 0 评论 -
构造可配置词法语法分析器生成器(上)
词法分析器(tokenizer)的作用是按照词法定义规则将输入流分解为token序列,同时记录与每个token匹配的串和出现的位置等信息提供给语法分析器。手工编写一个针对某种语言的词法分析器是比较容易的,事实上很多编译器的词法分析器也是手写的,这种方式的优点是直观容易理解,缺点是开发效率低且易出错。编译技术经过几十年的发展已经形成了一套成熟的理论,应用这些理论可以让我们实现词法分析器的自动构造。在Lex中,每个词法规则由正则表达式定义,我们只需要定义每个token的正则表达式,Lex就可以自动生成对应的分析原创 2014-09-22 09:36:03 · 8391 阅读 · 1 评论 -
构造可配置词法语法分析器生成器(下)
笔者在该文章中实现了一个类似于Lex & Yacc的编译器前端构造工具,该工具基于LALR(1)分析法,支持二义性文法,支持语法制导翻译,支持错误恢复机制,使用它我们可以构造指定词法文法的编译器前端,并且构造的分析器是可重入的。文中最后给出了几个示例,构造四则表达式计算器,JSON解析器和C99标准C编译器前端。原创 2014-09-24 22:40:56 · 4470 阅读 · 4 评论 -
构造可配置词法语法分析器生成器(中)
语法分析器语法分析器(grammar parser)是编译器的核心部分之一,它的作用是检测词法分析器返回的token序列是否符合文法定义的规则。一个完整的语法分析器除了检测语法正确性外还要包含对出错的处理以及错误恢复等功能。原创 2014-09-24 09:21:11 · 5492 阅读 · 0 评论