串(string)(或字符串)是用0個(gè)或多個(gè)字符組成的有限序列,一般記為
s='a1a2····an'(n>=0)
在線性表中查找某個(gè)元素、求元素個(gè)數(shù)、在某個(gè)位置上插入一個(gè)元素和刪除一個(gè)元素等;在串的基本操作中,通過以“串的整體”作為操作對(duì)象,例如在串中查找某個(gè)子串、求一個(gè)子串、在串的某個(gè)位置上插入一個(gè)子串以及刪除一個(gè)子串等。
算法4.1:可利用判等、求串長和求子串等操作實(shí)現(xiàn)定位函數(shù)Index(S,T,pos)。
下面是代碼:
int Index(String S, String T, int pos) { // T為非空串。若主串S中第pos個(gè)字符之后存在與T相等的子串, // 則返回第一個(gè)這樣的子串在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這個(gè)函數(shù)就是求字符串長度,返回值為int型。
2.可能有人會(huì)問為什么這個(gè)while循環(huán)里面是n-m+1,而不是n-m:
舉個(gè)例子,當(dāng)S的長度為5,T的長度為2時(shí),i=1時(shí),那么5-2=3,但是要比較到S串的第4個(gè)字符才知道他到底有沒有包含T串,所以要+1。
3.這里的SubString作用是,用sub返回串S的第i個(gè)字符起長度為m的子串。
4.Strcompare這個(gè)函數(shù)若sub>T則返回值>0,若sub=T返回值為0,若s<T返回指<0
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注