背景
最近开始研究算法,于是在leetcode上做算法题,第五题Longest Palindromic Substring便是关于回文子串的。
什么是回文字串
回文字符串是指将该字符串前后颠倒之后和该字符串一样的字符串。例如:a,aaaa,aba,abba…
最长回文子串
要求最长回文子串,就需要遍历每一个子串,时间复杂度是O(N²);判断字串是不是回文,时间复杂度是...
分类:
编程语言 时间:
2015-08-18 10:18:51
阅读次数:
172
题目链接:点击进入
其实就是KMP算法next数组的简单应用。如果我们设这个字符串的最小周期为x 长度为len,那么由next数组的意义,我们知道len-next[len]的值就会等于x。这就是这个题目的关键点。代码如下:#include
#include
#include
using namespace std;const int maxn=...
分类:
其他好文 时间:
2015-08-16 16:40:55
阅读次数:
95
KMP是一种高效的字符串查找算法,主要用于在主串中查找一个特定字串(模板)出现的位置(或是否出现)。
朴素字符串查找算法主要是通过逐次比较来实现的,在主串中找到一个位置I和字串起始字符一样时,便顺次比较后续字符。若匹配成功,则输出相应结果。若不匹配,则从位置I的下一个位置I+1开始比较。若主串长度为M,字串长度为N的最多需要比较M*N次。
KMP比较主要的改进是,充分利用已经比较的结果和字符串...
分类:
编程语言 时间:
2015-08-13 18:03:45
阅读次数:
153
ACM中常用算法—-字符串ACM中常用的字符串算法不多,主要有以下几种:
Hash
字典树
KMP
AC自动机
manacher
后缀数组
EX_KMP
SAM(后缀自动机)
回文串自动机
下面来分别介绍一下:0. Hash字符串的hash是最简单也最常用的算法,通过某种hash函数将不同的字符串分别对应到不同的数字.进而配合其他数据结构或STL可以做到判重,统计,查询等操作.
#### 字符串的h...
分类:
编程语言 时间:
2015-07-26 12:42:25
阅读次数:
297
/* poj 3617 best cow line
题意为给定长度为N的字符串S,需要构造出长度为N的字符串T,开始的时候T是一个空串
随后只能反复从S的开始或者结尾的地方取一个字符接到T的末尾,要求是根据这个规则
构造出字典序尽可能小的字符串T
算法设计:每次都比较末尾和开头的字符,如果不想等,则选择字典序较小的那个字符
接到T的末尾,这样构造出来的...
分类:
其他好文 时间:
2015-04-02 22:37:59
阅读次数:
181
转载自: http://blog.csdn.net/dyx404514/article/details/42061017Manacher算法算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车...
分类:
编程语言 时间:
2015-03-18 22:56:09
阅读次数:
205
引言字符串匹配是数据库开发和文字处理软件的关键。幸运的是所有现代编程语言和字符串库函数,帮助我们的日常工作。不过理解他们的原理还是比较重要的。字符串算法主要可以分为几类。字符串匹配就是其中之一。当我们提到字符串匹配算法,最基本的方法就是所谓的蛮力解法,这意味着我们需要检查每一个文本串中的字符是否和匹配串相匹配。一般来说我们有文本串和一个匹配串(通常匹配串短于文本串)。我们需要做的就是回答这个匹配串是...
分类:
编程语言 时间:
2015-02-05 21:58:45
阅读次数:
255
查找字符串是我们平常编程过程中经常遇到的,现在介绍一种查找字符串算法,增加程序的执行速度。通常我们是这么写的:/* content: search a string in a othor string author: lw date: 2015-01-30 target: kmp a...
分类:
编程语言 时间:
2015-02-01 01:49:58
阅读次数:
157
本文汇编了一些常见的字符串算法,包括字符串反转算法、字符串左旋算法、字符串右旋算法、字符串旋转匹配算法、字符串包含算法、字符串删除算法、字符串转整数算法、字符串全排列算法、字符串字典序组合算法等。
分类:
编程语言 时间:
2015-01-30 21:05:31
阅读次数:
355
前言
找工作的时候,曾经用C语言练习过一段时间的算法题目,也在几个还算出名的OJ平台有过还算靠谱的排名。之前以为C语言只限于练习一下算法,但是工作中的一个问题解决让我意识到C语言的用处还是非常广泛的。下面介绍一下,如果用C语言来操作文件保存一个字符串,和读取一个字符串。算法中往往都是printf来打印出结果,但是真实工作中往往通过文件来进行一些持久化的存储工作。
C-File...
分类:
编程语言 时间:
2015-01-05 18:49:20
阅读次数:
208