您的位置:首页 > 其它

第四章字符串和多维数组

2014-11-01 21:02 281 查看

4.1字符串和多维数组

1. 串:零个或多个字符组成的有限序列。

 串长度:串中所包含的字符个数。

 空串:长度为0的串,记为:" "。

2.非空串通常记为:

      S=" s1 s2 …… sn "

其中:S是串名,双引号是定界符,双引号引起来的部分是串值 ,si(1≤i≤n)是一个任意字符。
3.子串:串中任意个连续的字符组成的子序列。

主串:包含子串的串。

子串的位置:子串的第一个字符在主串中的序号
4.串的数据对象约束为某个字符集。

 微机上常用的字符集是标准ASCII码,由 7 位二进制数表示一个字符,总共可以表示 128 个字符。

 扩展ASCII码由 8 位二进制数表示一个字符,总共可以表示 256 个字符,足够表示英语和一些特殊符号,但无法满足国际需要。

 Unicode由 16 位二进制数表示一个字符,总共可以表示 216个字符,能够表示世界上所有语言的所有字符,包括亚洲国家的表意字符。为了保持兼容性,Unicode字符集中的前256个字符与扩展ASCII码完全相同。  
5.模式匹配:给定主串S="s1s2…sn"和模式T="t1t2…tm",在S中寻找T 的过程称为模式匹配。如果匹配成功,返回T 在S中的位置;如果匹配失败,返回0。
6.模式匹配问题有什么特点:
⑴ 算法的一次执行时间不容忽视:问题规模通常很大,常常需要在大量信息中进行匹配;

⑵ 算法改进所取得的积累效益不容忽视:模式匹配操作经常被调用,执行频率高。

7.模式匹配----BF算法
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: