1、定义
串是由零个或多个字符组成的有限序列,又名字符串
2、抽象数据类型
- Data 串中元素仅由一个字符组成,相邻元素具有前驱和后继关系
- Operation
- StrAssign( T, *chars ) 生成一个其值等于字符串常量chars的串T
- StrCopy( T, S ) 串S存在,由串S复制得串T
- ClearString( S ) 串S存在,将串清空
- StringEmpty( S ) 若串为空 返回true 否则返回false
- StrLength( S ) 返回串S的元素个数,即串的长度
- StrCompare( S, T ) 若S>T,返回>0, 若S=T,返回0,若S<T 返回<0
- Concat( T, S1, S2 ) 用T返回S1和S2连接而成的新串
- SubString( Sub, S, pos, len ) 串存在 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种存在和串T值相同的子串,则返回它在主串S中 第pos个字符之后第一次出现的位置,否则返回0
- Replace( S,T,V ) 串S T V存在, T是非空串。用V替换主串S中出现的所有与T相等的不重叠的子串
- StrInsert( S, pos, T ) 串S和T存在 1≤pos≤StrLength(S)+1 在串S的第pos个字符之前插入串T
- StrDelete( S, pos, len ) 串存在 1≤pos≤StrLength(S)+1 从串S种删除第pos个字符起长度为len的子串
3、查找子串-(1)-使用自带API
//T为非空串。若主串S中第pos个字符之后存在与T相等的子串,则返回第一个这样的子串在S中的位置,否则返回0
int Index( string S, string T, int pos)
{
if (pos <= 0)
{
return 0;
}
int s_len = StrLength(S);
int t_len = StrLength(T);
int i = pos;
string sub;
while(s_len - i + 1 >= t_len)
{
SubString(sub, S, i);
if (StrCompare(sub, T) != 0)
{
++i;
}
else
{
return i;
}
}
return 0;
}
4、串的存储结构
5、朴素模式匹配算法