版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83077135
发现考试会出现对于抽象类型与方法的考察,使用基本运算来实现算法
注意:
- 不需要关注字符串内部字符怎么存的(是从0位开始,还是1位开始)
- 只需要关注我们表面看到的,第几个位置开始即可
ADT String{
数据对象:
D = {ai|ai∈CharacterSet, i=1,2,...,n,n≥0}
数据关系:
R1 = {<ai-1, ai> | ai-1,ai∈D, i=2,...,n}
方法:
StrAssign(&T, chars) 静态字符串赋值给字符对象
ClearString(&S) 将S清为空串
DestroyString(&S) 销毁字符对象
StrCopy(&T, S) 复制字符对象
Concat(&T, S1, S2) 连接两个字符对象
StrEmpty(S)
判断字符串对象是否为空
空串返回True
StrLength(S) 串长度
SubString(&Sub, S, pos, len) 截取字符串给sub
初试条件:
串 S 存在
1≤pos≤StrLength(S)
0≤len≤StrLength(S)-pos+1
操作结果:
用 Sub 返回串 S 的第 pos 个字符起长度为 len 的子串
Index(S, T, pos)
初试条件:
S、T存在
T是非空串
1≤pos≤StrLength(S)
操作结果:
求S中第pos之后,T出现的位置,并返回
Replace(&S, T, V) 用V替换S中出现的所有与T相等的不重叠的子串
StrInsert(&S, pos, T)
初始条件:
串S和T存在
1≤pos≤StrLength(S)+1
操作结果:
在S的第pos个字符之前插入T
StrDelete(&S, pos, len)
初始条件:
串S存在
1≤pos≤StrLength(S)-len+1
操作结果:
删除S的第pos个位置开始长度为len的子串
StrCompare(S, T) 比较S、T两字符串
}ADT String
例如:
1. SubString()
SubString( sub, "commander", 4, 3)
求得 sub = "man"
SubString( sub, "commander", 1, 9)
求得 sub = "commander"
SubString( sub, "commander", 9, 1)
求得 sub = "r"
SubString("student", 5, 0) = "" //长度为0的子串为合法串,空串
SubString("commander", 4, 7) = 错误
SubString("beijing", 7, 2) =错误
2. Index()
S = "abcaabcaaabc", T = "bca"
Index(S, T, 1) = 2;
Index(S, T, 3) = 6;
Index(S, T, 8) = 0;
3. Respace
S = "abcaabcaaabca",T = "bca"
V = "bc"--> S = "abcabcaabc"
最小操作子集:
- StrAssign
- Strcopy
- StrCompare
- StrLength
- Concat
- SubString