以图明志

数据结构

[专题] 字符串中的子串替换

串的替换
在很多编程语言中,都封装了字符串替换的操作,那么我们这里自己用C语言来实现一个字符串替换的函数。具体需求为:Replace(String S,String T,String V),用V替换主串S中出现的所有与T相等的不重叠的子串。字符串替换这个操作,需要结合我们前面讲到的几个函数。

数据结构

[专题] 如何在串中删除特定长度的子串

串的删除
昨天我们写了如何在串中插入另外一个串,那么今天我们来看看对应的操作:如何在串中删除指定长度的子串。也就是,从串S1中删除第pos个字符起长度为len的子串。其实就是数组操作啦,把第pos个元素起的len个元素去掉即可。具体怎么去掉呢?把S[pos+len]赋值给S[pos],把S[pos+len+1]赋值给S[pos+1]……以此类推就OK了。

数据结构

[专题] 寻找子串在主串中的位置

匹配主串与子串的过程
我们先来看这么一个需求。比如主串是 nowamagic.net,子串是 magic,那么如何知道 magic 在主串的第几个字符后的位置呢?设i用于主串s1中当前位置下标值,j用于子串sub中当前位置下标值。首先我们比较s1[1]与sub[1],如果相同的话,可能子串就开始了。如果不相等,那么子串仍然是从sub[1]开始,而主串s1则以s1[2]与其比较。

数据结构

[专题] 串最基本的5个操作的C实现

串的最小操作子集
前面谈到串的最小操作子集:串赋值StrAssign,串比较StrCompare,求串长StrLength,串联接Concat,求子串SubString。这5种操作不可能利用其他串操作来实现,但其他串操作均可在这个最小操作子集上实现。这里我们写程序实现上面的操作吧。

数据结构

[专题] 串的顺序存储结构

串在内存中如何存储?
串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。一般是用定长数组来定义。既然是定长数组,就存在一个预定义的最大串长度,一般可以将实际的串长度值保存在数组的0下标位置,有的书中也会定义存储在数组的最后一个下标位置。

数据结构

[专题] 串的抽象数据类型ADT

定义串的一些操作
串的逻辑结构和线性表很相似,不同之处在于串针对的是字符集,也就是串中的元素都是字符,哪怕串中的字符是“123”这样的数字组成,或者“2010-10-1CT这 样的日期组成,它们都只能理解为长度为3和长度为10的字符串,每个元素都是字符而已。

数据结构

[专题] 数据结构里的串是什么东西?

就是字符串啦
早先的计算机在被发明时,主要作用是做一些科学和工程的计算工作,也就是现在我们理解的计算器,只不过它比小小计算器功能更强大、速度更快一些。后来发现,在计算机上作非数值处理的工作越来越多,使得我们不得不需要引入对字符的处理。于是就有了字符串的概念。

PHP服务器脚本

收藏几个支持中文的PHP字符串截取函数

比较好用的字符串截取函数
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。

计算机算法

JavaScript语言描述的最大公共子串问题

常见的做法是使用矩阵
求最大公共子串,常见的做法是使用矩阵。假设有字符串:abcdefg和字符串abcd,则可构成如下矩阵。对两个字符串的每一项都进行比较,若匹配则该项为1,不匹配则为0。然后求出对角线最长为1的那一段序列,即为最大公共子串。看上面的分开,似乎得使用二维数组了,在两个字符串都较大的情况下不是很划算,是否可以进一步优化?

JavaScript

收藏一个JavaScript字符串连接方法

写成了类的方式,方便调用
最近在看一同事写的代码时,有一个字符串用了一堆"+"号,看了半天没明天到底会输出什么样的内容,就想到用字符串连接的类,把以前的方法写成了类的方式,方便调用。下面的类支持实例调用和静态调用,参数可以是单独的字符串,或者json的格式,或者类似参数数组的方式,见下面示例。

计算机算法

字符串逆序的各种实现算法

字符串逆序有很多种实现方式
很早就准备写一个字符串系列的面试题,本来已经写好了,大概有十几道题,但是写完才发现,文章好长,连我自己都没有耐心读下去了,索性就将其拆分成几个系列,一来分开后篇幅变小,看起来比较方便。二来也更有针对性,便于精雕细作。比如这篇,在原来的文章中只占很小的篇幅,但是独立出来才发现,东西也不少。既然是第一篇,就来个最最简单的字符串逆序吧。

PHP服务器脚本

PHP截取中英混合的字符串

一个很不错的截取函数介绍
今天在遇到了一个中英字符串截取的问题,在gbk里中文里每个字占两字节,如果全是中文的话,用substr()函数就可以实现了,但中英都有的话就麻烦了,在以前收藏的代码里找到了一个不错的函数,很好的实现了截取的功能。

PHP服务器脚本

PHP的serialize()串行化函数

一个优秀的数据存储与传递方案
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。想要将已序列化的字符串变回 PHP 的值,可使用 unserialize() 。 serialize() 可处理除了 resource 之外的任何类型。

PHP服务器脚本

PHP开发中常见的字符串处理汇总

了解下PHP的一些字符串操作
在编程的过程当中,字符串的操作是非常重要的并且经常会被用到,字符串常用的操作具体的包括字符串的拼接,替换字符串,查找字符串,比较字符串,复制字符串以及计算字符串的长度等等。拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作。

JavaScript

JavaScript使用数组拼接字符串性能如何?

字符串拼接是比较消耗性能的操作
传统上,字符串连接一直是js中性能最低的操作之一。早期浏览器没有对这种运算进行优化。由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果。频繁地在后台创建和销毁字符串导制性能异常低下。发现这一点后,开发者们利用数组对象进行优化。

计算机算法

亲身体验一下KMP算法

KMP快速字符串查找算法
KMP字符串查找(匹配)算法最大的好处,并不是它比strstr快,而是它不回溯。这是很奇妙的一个特征。这意味着目标文本只需要提供一个取得下一个字符的函数(在WINX中,这个函数叫get),就可以实现搜索。这对KMP算法的客户而言,无疑是非常有利的一件事情。
1 / 3 首页 < Prev 1 2 3 Next > 尾页 页码: