免费智能真题库 > 历年试卷 > 软件设计师 > 2017年下半年 软件设计师 上午试卷 综合知识
  第57题      
  知识点:   
  关键词:   子串   字符串        章/节:   计算机软件知识       

 
设S是一个长度为n的非空字符,其中的字符各不相同,则其互异的非平凡子(非空且不同于S本身)个数为( )。
 
 
  A.  2n-1
 
  B.  n2
 
  C.  n(n+1)/2
 
  D.  (n+2) (n-1)/2
 
 
 

 
  第18题    2020年下半年  
   31%
如下所示的软件项目活动图中,顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的权重表示活动的持续时间(天), 则完成该项..
  第64题    2019年上半年  
   61%
已知矩阵Am*n和Bn*p相乘的时间复杂度为O(mnp)。矩阵相乘满足结合律,如三个矩阵A、B、C相乘的顺序可以是(A*B)*C也可以是A*(B*C)。..
  第63题    2016年下半年  
   25%
下表为某文件中字符的出现频率,采用霍夫曼编码对下列字符编码,则字符序列“bee”的编码为(62);编码“110001..
   知识点讲解    
   · 
 
       串
               串的定义及基本运算
               串是仅由字符构成的有限序列,是取值范围受限的线性表。一般记为S='a1a2an',其中S是串名,a1a2an是串值。
               下面介绍串的几个基本概念。
               (1)空串:长度为零的串,空串不包含任何字符。
               (2)空格串:由一个或多个空格组成的串。
               (3)子串:由串中任意长度的连续字符构成的序列。含有子串的串称为主串。子串在主串中的位置指子串首次出现时,该子串的第一个字符在主串中的位置。空串是任意串的子串。
               (4)串相等:指两个串长度相等且对应位置上的字符也相同。
               (5)串比较:两个串比较大小时以字符的ASCII码值作为依据。比较操作从两个串的第一个字符开始进行,字符的ASCII码值大者所在的串为大;若其中一个串先结束,则以串长较大者为大。
               对串进行的基本操作有以下几种。
               (1)赋值操作StrAssign(s,t):将串t的值赋给串s。
               (2)连接操作Concat(s,t):将串t接续在串s的尾部,形成一个新串。
               (3)求串长StrLength(s):返回串s的长度。
               (4)串比较StrCompare(s,t):比较两个串的大小。
               (5)求子串SubString(s,start,len):返回串s中从start开始的、长度为len的字符序列。
               串的存储结构
               1)串的静态存储:定长存储结构
               串的顺序存储结构是用一组地址连续的存储单元来存储串值的字符序列。由于串中的元素为字符,所以可通过程序语言提供的字符数组定义串的存储空间,也可以根据串长的需要动态申请字符串的空间。
               2)串的链式存储:块链
               串也可采用链表方式作为存储结构,当用链表存储串中的字符时,每个节点中可以存储一个字符,也可以存储多个字符,要考虑存储密度的问题。在链式存储结构中,节点大小的选择和顺序存储方法中数组空间大小的选择一样重要,它直接影响对串处理的效率。
               串的模式匹配
               子串的定位操作通常称为串的模式匹配,它是各种串处理系统中最重要的运算之一。子串也称为模式串。
               1)朴素的模式匹配算法
               朴素的模式匹配算法也称为布鲁特一福斯算法,其基本思想是:从主串的第一个字符起与模式串的第一个字符比较,若相等则继续逐个字符进行后续的比较,否则从主串的第二个字符起与模式串的第一个字符重新比较,直至模式串中的每个字符依次和主串中的一个连续的字符序列相等,则称匹配成功,否则称匹配失败。
               该算法在最好情况下匹配算法的时间复杂度为O(n+m),而在最坏情况下的时间复杂度为O(n×m)。
               2)改进的模式匹配算法
               改进的模式匹配算法又称为KMP算法,其改进之处在于:每当匹配过程中出现相比较的字符不相等时,不需要回溯主串的指针,而是利用已经得到的"部分匹配"的结果,将模式串向后"滑动"尽可能远的距离,再继续进行比较。
               此算法的时间复杂度为O(n+m)。
   题号导航      2017年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第57题    在手机中做本题