字符串的定义
字符串是零个或多个组成的有限序列,只包含空格的串成为空格串。串中所包含的字符个数成为串的长度,长度为0的串为空串,记作“”,一个非空串通常该记作: S=“s1,s2…sn”
字符串中任意个连续的字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串,子串的第一个字符在主串的序号成为子串在主串的位置。
字符串的比较
当下列条件之一成立时,称X>Y。
(1)n<m,且x1<y1,(i=1,2…,n);
(2)存在某个k≤min(m,n),使得xi=yi,(i=1,2,…,k-1),xk<yk。
模式匹配
给定两个字符S=“s1,s2…sn”和T=“t1,t2…tn”,在主串S中寻找子串T的过程称为模式匹配,T成为模式。如何匹配成功,返回T在S中的位置;如果匹配失败,返回0.
朴素算法:
int BF(char S[],char T[])
{
i=0;
j=0;
while ((S[i]!='\0')&&T[j]!='\0')
)
{
if(S[i]==T[j])
{
i++;
j++
}
else
{
i=i-j+1;
j=0;
}
}
if(T[j]=='\0')
return (i-j+1);
else
return 0;
}
改进的模式匹配算法
朴素算法简单但效率较低,一种对朴素算法做了很大改进的模式匹配算法是KMP算法,其基本思想是主串不进行回溯。
详情可以参考我的这篇博客:点击这里