Replace(&S, T,v) 初始条件:串S,T和V均已存在,且T是非空串。 操作结果:用V替换主串S中出现的所有与(模式串)T相等的 不重叠的子串。 例如:假设S=” abenabcaaabca",T="bca 若V="x",则经置换后得到S=" axaxaax 若V="bc",则经置换后得到S=" abcabcaabe 例:假设S=" abcacabcaca",T="abca"和v="x",则置换之后的 S=xcxca 注意定义中"不重叠"三个字,着上例中的V="ab"时,则置换后 的结果应该是 s=" ababa",而不是" abba
Replace (&S, T, V) 初始条件:串S, T和 V 均已存在,且T 是非空串。 操作结果:用V 替换主串 S 中出现的所有与(模式串)T相等的 不重叠的子串。 例如: 假设 S = abcaabcaaabca, T = bca 若 V = x , 则经置换后得到S = axaxaax 若 V = bc , 则经置换后得到S = abcabcaabc bca bca bca 例:假设S="abcacabcaca",T="abca"和V="x",则置换之后的 S="xcxca"。 注意定义中"不重叠"三个字,若上例中的V="ab"时,则置换后 的结果应该是 S=" abcabca",而不是"abbca
在上述抽象数据类型定义的13种操作中, 串赋值 StrAssign、串复制 Strcopy、 串比较 StrCompare、求串长 StrEngth 串联接 Concat以及求子串 SubString 等六种操作构成串类型的最小操作子集。 即:这些操作不可能利用其他串操作来实现, 反之,其他串操作(除串清除 Clearstring和串 销毁 DestroyStringt外)可在这个最小操作子集 上实现
串赋值StrAssign、串复制Strcopy、 串比较StrCompare、求串长StrLength、 串联接Concat以及求子串SubString 等六种操作构成串类型的最小操作子集。 在上述抽象数据类型定义的13种操作中, 即:这些操作不可能利用其他串操作来实现, 反之,其他串操作(除串清除ClearString和串 销毁DestroyString外)可在这个最小操作子集 上实现
例如,可利用串比较、求串长和求子等 操作实现定位函数 Index(S,T,pos) 算法的基本思想为: StrCompare(SubString s, i, StrEngth(D),T=0 posT串 n-m+1l TER
例如,可利用串比较、求串长和求子串等 操作实现定位函数 Index( S, T, pos )。 StrCompare(SubString(S, i, StrLength(T)), T ) S串 T串 T串 i pos n-m+1 算法的基本思想为: ? 0
int Index (string s, String T, int pos)t ∥/T为非串。着主串中第pos个宇符之后在与T相等的子串, ∥/则返回第一个这样的子串在s中的位置,否则返回0 if(pos>0)i n= StrEngth (S); m= StrLength ( T);i=pos; while (i<= n-m+1i SubString(sub, s,i, m); if (StrCompare(sub,T)!=0)++i; else return i }∥ while return o //S中不存在与相等的子串
int Index (String S, String T, int pos) { // T为非空串。若主串S中第pos个字符之后存在与T相等的子串, // 则返回第一个这样的子串在S中的 位置,否则返回0 if (pos > 0) { } return 0; //S中不存在与T相等的子串 } n = StrLength(S); m = StrLength(T); i = pos; while ( i <= n-m+1) { } // while SubString (sub, S, i, m); if (StrCompare(sub,T) != 0) ++i ; else return i ;
串的置换函数 pos pos=i+m pos sub S T串 V串 n-pos+I news 串 sub
串的置换函数: S串 T串 V串 V串 pos pos sub i news 串 sub = i+m pos n-pos+1