串(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
新聞熱點
疑難解答