字符串匹配的BF算法和KMP算法学习

引言:关于字符串 字符串(string):是由0或多个字符组成的有限序列。一般写作`s = "123456..."`。s这里是主串,其中的一部分就是子串。 其实,对于字符串大小关系不如是否相同重要。包括密码验证、hash列等。 而字符串的存储结构有两种:顺序存储结构和链式存储结构。由于不同的字符是连在一起的,所以一般是开足够大的空间进行顺序存储,这样更符合字符串的意义。 一...
阅读(19) 评论(0)

GitHub:多人协作下的分支处理

GitHub上的团队协作远程信息git remote:查看远程库的信息git remote -v:查看远程库的详细信息推送分支git push origin 要推送的分支:比如git push origin dev是向服务器推送dev分支。而我们熟悉的git push origin master就是向远程推送master分支。假设有一个分支bug_dev专门用来修复bug,就不需要推送了,只要自己留...
阅读(15) 评论(0)

Git:分支的创建、合并、管理和删除

了解分支如果想实现多人协作、划出Bug区、Feature区等功能,就需要分支功能。(确实很强大的地方)每次commit时,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。而此时HEAD也指向master。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。当我们创建新的分...
阅读(7) 评论(0)

GitHub:创建和修改远程仓库

创建远程仓库首先在GitHub上创建一个仓库命名为learngit。选中public(private要钱),选中 生成README(就是markdown形式的说明文档),便于别人和自己了解仓库的作用。(附截图)克隆远程仓库切到工作目录下,执行git clone https://github.com/AsuraDong/learngit 就可以克隆到本地了。这时候文件名默认是仓库名字,如果想改名字可以...
阅读(14) 评论(0)

Git:文件操作和历史回退

创建仓库 创建文件文件夹 修改文件文件夹 回到修改前的版本 撤销修改 删除文件 工作区暂存区版本区 创建仓库创建新文件夹:mkdir learngit进入:cd learngitls发现没有任何东西:git init 将这个文件夹设置为git文件夹。目录下面会出现.git 的隐藏文件创建文件/文件夹当移入/创建新的文件和文件夹时,需要git add file然后,git commit -m 说明将文...
阅读(11) 评论(0)

方便简单的远程控制:putty和WinSCP

记录一下WinSCP和putty的用法。putty:远程cmd窗口,在本机通过命令行操作服务器,并且拿到运行结果。而本机只有连接作用,大大减小了负担。登陆界面输入ip地址,没有特殊情况,默认选项就可以了。截图 输入用户名和密码,进行登陆。截图 然后就可以在服务器上跑程序了。截图 WinSCP:极为方便地管理远程服务器的文件夹。然后再用上面的putty就可以运行程序了。登陆界面输入ip,账号,密...
阅读(12) 评论(0)

NLTK学习笔记(八):文法--词关系研究的工具

文法 自定义文法 文法用途 开发文法 分析文法的算法 递归下降解析器 移进-归约解析器 基于特征的文法 属性和约束 处理特征结构 包含和统一 总结对于一门语言来说,一句话有无限可能。问题是我们只能通过有限的程序来分析结构和含义。尝试将“语言”理解为:仅仅是所有合乎文法的句子的大集合。在这个思路的基础上,类似于 word -> word and/or/... word 就成立,这种式子叫做递归产生式。...
阅读(20) 评论(0)

NLTK学习笔记(七):文本信息提取

实体识别分块技术 分块语法的构建 树状图 IOB标记 开发和评估分块器 命名实体识别和信息提取 如何构建一个系统,用于从非结构化的文本中提取结构化的信息和数据?哪些方法使用这类行为?哪些语料库适合这项工作?是否可以训练和评估模型? 信息提取,特别是结构化信息提取,可以类比数据库的记录。对应的关系绑定了对应的数据信息。针对自然语言这类非结构化的数据,为了获取对应关系,应该搜索实体对应的特殊关系,并且...
阅读(9) 评论(0)

递归和分治思想及其应用

递归和分治思想 一些实例 逆序输出字符串 查找数组元祖是否存在 汉诺塔问题 八皇后问题 更多递归和分治思想 如果可以使用迭代,尽量别使用递归。由编译原理可以知道,每次自调用的时候,计算机都需要保存在调用,浪费时间空间。当然,迭代是当我们知道循环次数的时候。而当我们不知道循环次数,比如说对于文件夹和文件进行遍历,不知道深度的情况下,我们就需要递归来实现。 显然,递归是先解决小的问题,这种思想是...
阅读(16) 评论(0)

队列和循环队列的实现

队列 定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 按照队列的定义,结合内存地址的理解,初始化队列的时候,准备head和rear指针分别指向头和尾。Push操作,只需要改变rear指针;PopLeft操作只需要改变head。由...
阅读(11) 评论(0)

栈的应用:中缀和后缀表达式的转换及计算

一两种表达式 二转化规则和思路 三代码实现 四计算后缀表达式的思路 一、两种表达式中缀表达式:人使用的类似于(2+3*5),运算符号在数字中间的表达式后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则。这是计算机的计算方式。二、转化规则和思路利用栈,可以实现中缀表达式转化为后缀表达式。也可以实现后缀表达式的计算。这里主要实现...
阅读(10) 评论(0)

栈的各种操作

栈(stack)又名堆栈,是仅允许在表的一端进行插入和删除运算。表尾一端被称为栈顶,相对地,表头称为栈底。Push:向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素。Pop:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 流程如下 初始化 初始化一个栈的大小为STACK_SIZE,并且将容量size设置为ST...
阅读(12) 评论(0)

NLTK学习笔记(六):利用机器学习进行文本分类

利用机器学习算法进行文本分类利用机器学习算法进行文本分类 一监督式分类建立在训练语料基础上的分类 特征提取器和朴素贝叶斯分类器 过拟合当特征过多 错误分析 二实例文本分类和词性标注 文本分类 词性标注决策树分类器 三更近一步的连续分类或贪婪序列分类在朴素贝叶斯和决策树之后 四评估 五三种分类器的总结 六后记 关于分类文本,有三个问题 1. 怎么识别出文本中用于明显分类的特征 2. 怎么构建自动分...
阅读(51) 评论(2)

C++数组查重

今天课上实验课,遇到一道题目,需要查找一个数组中出现次数最多的元素和次数,并且输出。第一次用struct模拟字典,十分麻烦而且复杂度是O(n*n)。其实,运用转化的思想,可以先将其排序,然后再查找即可,时间复杂度之后只有O( n*log_2(n))。题目是这样的: 某小镇要票选镇长,得票最高者当选。但由于投票机制不健全,导致每届投票时,候选人在投票系统的识别码类型不一致。请编写函数模板,能针对多...
阅读(36) 评论(0)

双向链表和双向循环链表

双向链表和双向循环链表和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可。插入操作 新节点s插入链表,s->next给p结点,s->prior给p->prior,然后,p->prior->next指向s,p->prior再指向s。顺序需要注意...
阅读(91) 评论(0)

链表是否有环的两种判断方法

判断链表是否有环已知:假设有一个含环链表:1-2-3-4-5-6-3(6又连接到3,形成一个环) 1. 使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。当p从6走到3时,用了6步;此时q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环。而且可以锁定环的位置,就是q的步数+1 2. 使用p、q两个指针,p每次向前走一步,q每次向前走两步,...
阅读(38) 评论(0)

尾指针及其简单应用

尾指针及其简单应用 循环链表如果拿到最后结点,若没有尾指针(rear),那么需要O(n)的时间。如果有的话,只需要O(1)的时间。 如果有两个链表,需要将他们连接,拥有尾指针只需要O(1)的时间复杂度。 此时,判断循环链表是否为空的方法:rear是否等于rear->next。 一道题目:将两个线性表A(a1,a2,a3…)和B(b1,b2,b3…)连接成一个线性表。思路:A的rear不再...
阅读(40) 评论(0)

python3实现UDP协议的简单服务器和客户端

利用python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端。为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了。 UDP:用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差。 客户端python3只能收发二进制数据,...
阅读(124) 评论(0)

python3实现TCP协议的简单服务器和客户端

利用python3来实现TCP协议,和UDP类似。UDP应用于及时通信,而TCP协议用来传送文件、命令等操作,因为这些数据不允许丢失,否则会造成文件错误或命令混乱。下面代码就是模拟客户端通过命令行操作服务器。客户端输入命令,服务器执行并且返回结果。 TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF...
阅读(112) 评论(0)

深入C++的运算符重载

对于简单的运算符,可以参考之前的博文。之后会有一篇关于从等号运算符重载的角度研究深浅拷贝的博文。 逗号运算符重载 逗号运算符重载需要一个参数,并且返回自身类。逗号运算符在复制操作中比较常见,下面就是以赋值操作为例的逗号运算符重载。 #include #include using namespace std; class Tem{ private:...
阅读(65) 评论(0)
41条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:2190次
    • 积分:331
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章存档