以图明志

数据结构

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

串的替换
在很多编程语言中,都封装了字符串替换的操作,那么我们这里自己用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]与其比较。

计算机算法

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

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

计算机算法

寻找和最大的连续子串

网易的一道笔试题
给定一整型数字a[]={a[0],...,a[n])},找出连续子串{a[x]),a[x+1],...,a[y]},使得和最大,其中,0<=x<=y<=n。要求时间复杂度为O(n)。解决思路:和最大的子串一定是以数组a中的某一个元素为结束,所以我们分别对每一个元素作为当前子串的结尾计算当前和最大的子串,再对计算出的所有子串和进行比较,最大的那个就是解。
1 / 1 首页 < Prev 1 Next > 尾页 页码: