?? func4-1.cpp
字號(hào):
// func4-1.cpp 與存儲(chǔ)結(jié)構(gòu)無(wú)關(guān)的兩個(gè)基本操作
int Index(String S,String T,int pos) // 算法4.1
{ // T為非空串。若主串S中第pos個(gè)字符之后存在與T相等的子串,
// 則返回第一個(gè)這樣的子串在S中的位置;否則返回0
int n,m,i;
String sub;
InitString(sub); // 新增
if(pos>0)
{ n=StrLength(S); // 主串S的長(zhǎng)度
m=StrLength(T); // 模式串T的長(zhǎng)度
i=pos;
while(i<=n-m+1) // i從串S的pos到倒數(shù)第m個(gè)
{ SubString(sub,S,i,m); // 子串sub是從主串S的第i個(gè)字符起,長(zhǎng)度為m的子串
if(StrCompare(sub,T)!=0) // 子串sub不等于模式串T
++i; // 繼續(xù)向后比較
else // 子串sub等于模式串T
return i; // 返回模式串T的第1個(gè)字符在主串S中的位置
}
}
return 0; // 主串S中不存在與模式T相等的子串
}
Status Replace(String &S,String T,String V)
{ // 初始條件:串S、T和V存在,串T是非空串
// 操作結(jié)果:用串V替換主串S中出現(xiàn)的所有與串T相等的不重疊的子串
int i=1; // 從串S的第一個(gè)字符起查找串T
Status k;
if(StrEmpty(T)) // T是空串
return ERROR;
while(i)
{ i=Index(S,T,i); // 結(jié)果i為從上一個(gè)i之后找到的子串T的位置
if(i) // 串S中存在串T
{ StrDelete(S,i,StrLength(T)); // 刪除串T
k=StrInsert(S,i,V); // 在原串T的位置插入串V
if(!k) // 不能完全插入(定長(zhǎng)順序存儲(chǔ)結(jié)構(gòu)有可能發(fā)生這種情況)
return ERROR;
i+=StrLength(V); // 在插入的串V后面繼續(xù)查找串T
}
};
return OK;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -