6-3 链表逆置 (20 分) 本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *reverse( ...
分类:
其他好文 时间:
2019-11-25 20:53:21
阅读次数:
155
KMP总结 什么是KMP? KMP算法,又称为模式匹配算法,能够在线性时间内判定字符串 $A[1$~$N]$ 是否为字符串 $B[1$~$M]$ 的子串,并求出字符串 $A$ 在字符串 $B$ 中各次出现的位置。(from 李煜东《算法竞赛进阶指南》) 如何进行KMP? 第一步: $A$串进行自我匹 ...
分类:
其他好文 时间:
2019-11-24 13:54:45
阅读次数:
62
```cpp int pi[1005]; void GetPrefixFunction(char *s, int sl) { pi[0] = 0, pi[1] = 0; for(int i = 1, k = 0; i < sl; ++i) { while(k && s[i] != s[k]) k =... ...
分类:
编程语言 时间:
2019-11-21 13:46:42
阅读次数:
50
位运算主要有以下几方式 位的提取(把每一位提取出来) 字符串匹配,感觉在位运算中使用字符串很好用 异或运算去重复,异或代替其他运算,总之异或很重要 一、常用的知识点 (1)位操作 | 与运算:与运算用来置位 & 并运算:并运算用来掩码,n&(-n)可以获得最低位的1 ~取反:用的很少 ^异或运算:异 ...
分类:
其他好文 时间:
2019-11-19 17:02:22
阅读次数:
109
1 经典的算法题目 1.1 字符串匹配问题 有一个字符串str1="哈哈哈 你好啊好啊 你好啊啊 你好啊好啊啊你好你好好",和一个子串str2="你好啊好啊啊". ①判断str1中是否是否包含str2,如果存在,就返回第一次出现的问题。如果没有,则返回-1. ②要求用最快的速度完成匹配。 思路1:暴 ...
分类:
编程语言 时间:
2019-11-17 17:31:53
阅读次数:
108
一、KMP算法介绍 KMP算法与前面的MP算法一脉相承,都是充分利用先前匹配的过程中已经得到的结果来避免频繁回溯。回顾一下MP算法,如下图的模式串偏移,当前模式字符串P的左端的p0与目标字符串T中tj位置对齐。从左向右逐个进行比较,发现 pi 处的字符a 与 tj+1 处字符b发生失配。同时也表明 ...
分类:
编程语言 时间:
2019-11-12 00:41:43
阅读次数:
68
前言 本篇博客的字符串下标是从1开始的。 引入 给出两个字符串$A,B$,询问$B$是否是$A$的子串。 对于以上问题,我们有一个比较暴力的想法,就是一位一位去配对呀。 给出代码: cpp int Check(){ for(int i=1;i+M 1 include include using na ...
分类:
编程语言 时间:
2019-11-08 21:12:18
阅读次数:
123
1.迭代器 定义 能被next()函数进行调用且不断返回下一个值的对象。其内置方法中包含 (返回迭代器本身)和 (返回容器的下一个元素)。 特征 迭代器会生成惰性序列,它通过计算把值依次的返回,一边循环一边计算,而不是一次性得到所有的数据。 优点 需要数据的时候,一次取一个,可以在很大程度上节省内容 ...
分类:
其他好文 时间:
2019-11-06 01:03:13
阅读次数:
107
一、BF算法的基本思想 BF(Brute Force)算法是模式匹配中最简单、最直观的算法。该算法最基本的思想是从主串的第 start 个字符起和模式P(要检索的子串)的第1个字符比较,如果相等,则逐个比较后续字符;比较过程中一旦发现不相等的情况,则回溯到主串的第 start+1 个字符位置,重新和 ...
分类:
编程语言 时间:
2019-11-06 00:49:52
阅读次数:
93
1) 概述 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描 ...
分类:
其他好文 时间:
2019-11-05 21:28:16
阅读次数:
79