[串] 0 串-总结

版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83077135

在这里插入图片描述

发现考试会出现对于抽象类型与方法的考察,使用基本运算来实现算法

注意:

  1. 不需要关注字符串内部字符怎么存的(是从0位开始,还是1位开始)
  2. 只需要关注我们表面看到的,第几个位置开始即可
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"

最小操作子集:

  1. StrAssign
  2. Strcopy
  3. StrCompare
  4. StrLength
  5. Concat
  6. SubString

猜你喜欢

转载自blog.csdn.net/summer_dew/article/details/83077135