自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ls121015的专栏

欢迎交流,学习,共同进步!

  • 博客(14)
  • 收藏
  • 关注

原创 统计单词出现最多的个数

#include #include #include #define MAX 26typedef struct trie_node{ struct trie_node *branch[MAX]; int is_str ; int count;}Trie;int max = 0;void insert(Trie *,char*,char*);int

2013-08-14 12:55:46 416

转载 KMP算法详解

KMP字符串模式匹配详解来自CSDN     A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一.  简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T [ ], int po

2013-08-13 16:37:25 371

原创 排序算法

void merge_sort(int a[],int m ,int n){ if( m+1 < n) { int mid = (m+n)/2; merge_sort(a,m,mid); merge_sort(a,mid,n); merge(a,m,mid,n); }}void merge(int a

2013-08-11 21:19:30 370

原创 二维数组的传递

可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:      void Func(int array[3][10]);      void Func(int array[][10]);      二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:      voi

2013-08-08 17:01:59 400

原创 bloom filter

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。本文着重于在实现Bloom Filter的时候会使用到的一些技巧。    布隆过滤器的原理不难理解。相对于一个精简的HashMap的数据结构

2013-08-03 20:13:57 566

转载 后缀数组

基本概念一、字符串的大小比较: 关于字符串的大小比较,是指通常所说的 “ 字典顺序 ” 比较, 也就是对于两个字符串 u 、v ,令 i 从 1 开始顺次比较 u[i] 和 v[i] ,如果u[i]=v[i] 则令 i 加 1 ,否则若 u[i]v[i] 则认为 u>v,比较结束。如果 i>len(u) 或者 i>len(v) 仍比较不出结果,那么若 len(u)len(v) 则 u>

2013-08-02 15:15:35 452

原创 trie 树

本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串等基本操作;至于trie树的删除单个节点实在是少见,故在此不做详解。Trie原理Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie性质好多人说trie的根节点不包含任何字符信息,我所习惯的trie根节点却是包

2013-08-01 10:50:44 423

原创 败者树

外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。      多路归并排序算法在常见数据结构书中都有涉及。从2路到多路(k路)

2013-07-30 09:33:35 2618

原创 在一个字符串中,寻找含有目标字符的最短的字串

例如 src = "ab1dkj2ksj32g1e32ks1iji2sk1ks13ab;iksaj12s23";des = “123”,在src中找出含有“123”的最短字串。void MinSubString( char *src, char *des ){ char *q,*p,*f; p = des; f = NULL; int len = strl

2013-07-18 21:11:55 715

原创 输入一个字符串,输出该字符串中对称的子字符串的最大长度。

题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。

2013-07-18 20:10:13 1080

原创 用递归的方法翻转一个栈

void reverse(Stack *st){ if(st->a.top > -1) { int temp = pop(st); reverse(st); add_bottom(st,temp); }}void add_bottom(Stack*st,int temp){ if(st->a.top ==

2013-07-18 18:55:55 423

原创 输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。

输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,po

2013-07-18 18:49:11 1169

原创 求子数组的最大和

输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。此题要注意全是负数的情况!int max_sum(int a[],int

2013-07-18 18:39:46 358

原创 memcpy与memmove函数的区别

#memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开销。memmove的处理措施:(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝;(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝;(3)当源内存的首地

2013-07-17 23:55:28 446

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除