串(string)(或字符串)是用0个或多个字符组成的有限序列,一般记为
s='a1a2····an'(n>=0)
在线性表中查找某个元素、求元素个数、在某个位置上插入一个元素和删除一个元素等;在串的基本操作中,通过以“串的整体”作为操作对象,例如在串中查找某个子串、求一个子串、在串的某个位置上插入一个子串以及删除一个子串等。
算法4.1:可利用判等、求串长和求子串等操作实现定位函数Index(S,T,pos)。
下面是代码:
int Index(String S, String T, int pos) { // T为非空串。若主串S中第pos个字符之后存在与T相等的子串, // 则返回第一个这样的子串在S中的位置,否则返回0 int n, m, i; String sub; if (pos > 0) { n = StrLength(S); m = StrLength(T); i = pos; while (i <= n - m + 1) { SubString(sub, S, i, m); if (StrCompare(sub, T) == 0) ++i; else return i; } // while } // if return 0;}下面来分析下:
1.这里面StrLength这个函数就是求字符串长度,返回值为int型。
2.可能有人会问为什么这个while循环里面是n-m+1,而不是n-m:
举个例子,当S的长度为5,T的长度为2时,i=1时,那么5-2=3,但是要比较到S串的第4个字符才知道他到底有没有包含T串,所以要+1。
3.这里的SubString作用是,用sub返回串S的第i个字符起长度为m的子串。
4.Strcompare这个函数若sub>T则返回值>0,若sub=T返回值为0,若s<T返回指<0
新闻热点
疑难解答