<数据结构与算法>之字符串,散列,布隆过滤器。
1:字符串
字符串是一组由数字,字符,下划线的一串字符,是特殊的一维数组。
2:字符串的应用
字符串移位包含问题:
例:给定两个字符串s1和s2,要求判断s2是否能被s1做循环移位得到字符串包含。例如,给定s1=ABCD 和s2=CDAA,返回true。给定s1=ABCD,和s2=ACBD,返回false。
KMP算法:
例:给定两个字符串O和S,其长度分别为n和m,求是否s在o 中是否出现如果出现则返回出现的位置。
分析:常规的算法是去遍历O的每一个元素,然后从该位置开始和s进行比较,但是这种算法的复杂度为O(nm);
KMP算法则是处理s的前后端的长度处理完后再进行比较的出返回位置。
编辑距离:
例:假设A和B是两个字符串。要用最少的字符操作将字符串A转化为字符串B。这里所说的字符操作包括:
1:删除一个字符;
2:加入一个字符;
3:替换一个字符;
将字符串A转化为字符串B所需要的最少的字符在操作数称为编辑距离。记作d(A,B);设置一个有效的算法,计算出任一两个字符串A和B,计算出他们的编辑距离d(A,B);
性质:
两个字符串的最小编辑距离至少是两个字符串的长度差;
两个字符串的最大编辑距离最多是两个字符串中长度最长的那个长度;
两个字符串的编辑距离为0的首要条件是两个字符串完全相等。
如果两个字符串等长,编辑距离的上限是汉明距离;
编辑距离满足三角不等式;
应用:
字符串拼写检查;
DNA相似度的检查;
diff命令,等。
与其他度量标准的关系:
汉明距离:只允许替换操作,两个字符等长;
最长公共子序列:只允许插入和删除操作;
分析:
使用动态规划来解,固定一个字符串,将另一个字符串通过三种操作来变化为这个字符串(B--A);
3:正则表达式
:文本中字符串的查找和替换;
:“*”表示前面内容重复任意次;
:"A*.*"可以表示a,ab,aa,b,空字符。等等;
4:通配符
:用在命令行中查找文件
:"*"代表多个字符;
:“?”代表任意单字符;
:“a*?*”可以表示ab,abcd。等等;
5:最长回文子串
<数据结构与算法>之字符串,散列,布隆过滤器。的更多相关文章
- Hash算法:双重散列
双重散列是线性开型寻址散列(开放寻址法)中的冲突解决技术.双重散列使用在发生冲突时将第二个散列函数应用于键的想法. 此算法使用: (hash1(key) + i * hash2(key)) % TAB ...
- Java数据结构和算法总结-字符串及高频面试题算法
前言:周末闲来无事,在七月在线上看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家.什么字符串在算法中有多重要之类的大路边上的客套话就不多说 ...
- Java数据结构和算法总结-字符串相关高频面试题算法
前言:周末闲来无事,看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家.什么字符串在算法中有多重要之类的大路边上的客套话就不多说了,直接上笔 ...
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...
- js数据结构与算法——字典与散列表
<script> //创建字典 function Dictionary(){ var items = {}; this.set = function(key,value){ //向字典添加 ...
- 纯数据结构Java实现(11/11)(散列)
欢迎访问我的自建博客: CH-YK Blog.
- 数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找
数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找 Boyer-Moore字符串查找算法 注意,<算法4>上将这个版本的实现称为Broyer-Moore算法,我看了 ...
- Java数据结构与算法解析(十二)——散列表
散列表概述 散列表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值. 散列表的思路很简单,如果所有的键都是整数,那么就可以使用一个简单 ...
- DotNet加密方式解析--散列加密
没时间扯淡类,赶紧上车吧. 在现代社会中,信息安全对于每一个人都是至关重要的,例如我们的银行账户安全.支付宝和微信账户安全.以及邮箱等等,说到信息安全,那就必须得提到加密技术,至于加密的一些相关概念, ...
随机推荐
- 传输层(2)-TCP连接的建立和终止、TIME_WAIT状态
1.TCP连接的建立和终止 1)三路握手 客户端发送一个SYN(同步)分解,告诉服务器客户将在连接中发送的数据的初始序列号. 服务器发送确认客户的SYN(ACK),同时自己也得发送一个SYN分节,它含 ...
- CListBox多选情况处理方法
如ListBox的内容如下,蓝色代表选中的内容 列表 索引 删除时索引 item1 0 0 item2 1 0 item3 2 item4 3 1 删除所有选中列: vo ...
- linux+php+apache web调用python脚本权限问题解决方案
lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...
- 转载:log4j.properties log4j.xml 路径问题
自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找lo ...
- 打水印 Imagename_biao是水印文件 ImgName是原图
/** * 打水印 Imagename_biao是水印文件 ImgName是原图 * @param Imagename_biao * @param ImgName */ public static v ...
- windbg学习---!thread和.thread
!thread扩展显示目标系统中线程包括ETHREAD块在内的摘要信息.该命令只能在内核模式调试下使用 !thread [-p] [-t] [Address [Flags]] -p 显示拥有该线程的进 ...
- node npm 安装模块 淘宝镜像
npm --registry https://registry.npm.taobao.org info underscore
- redis make时 提示 zmalloc.h:50:31: error: jemalloc/jemalloc.h:
redis安装需要环境必备 gcc 但是若未先安装好gcc,make失败后再次 make 会提示如下错误 zmalloc.h:50:31: error: jemalloc/jemalloc.h: 这时 ...
- c#FileStream文件读写(转)
FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能.这是因为FileStream类 ...
- Setup Factory 关闭正在运行的程序
--在全局函数中增加 适用用Setup Factory 9 function FindAndCloseProcessByName(strName) local tblProcesses = Wind ...