数据结构 寻找最小公共子串.docVIP

  • 2
  • 0
  • 约4.11千字
  • 约 6页
  • 2024-03-28 发布于湖北
  • 举报

PAGE2/NUMPAGES6

数据结构上机报告

——找出最长公共子串

?实验描述:

给定串T=t1t2……tn,则串,(即T中顺序、连续的一部分)称为串T的子串。例如“sing”、“ua”和“Tsinghua”都是字符串“Tsinghua”的子串,而“Thu”和“xyz”不是。

若串同时是多个串的子串,则称为的公共子串。

结合课上所学的算法设计思想,设计算法,对于给定的两个字符串,找出长度最长的公共子串。

?算法描述:

按照题目要求,需要找出两个字符串的最大公共字串。我设计的算法为用一个矩阵(intIs_equal[][])来记录两个字符串的所有字符之间的匹配情况,如果不匹配则即为0,否则不为0,而这里的计数规则下面将继续进行说明。从上面的叙述中可以知道,当用矩阵来记录两个字符串的匹配情况时,如果出现匹配字串,那么在矩阵中一定是在对角线的位置,而最长的对角线即对应最长的字符字串。在构造矩阵的时候,如果出现字符匹配那么就按照语句Is_equal[i][j]=Is_equal[i-1][j-1]+1给矩阵元素赋值,即匹配位置的元素的大小为其左上角元素加1。用一个变量max_len来记录最长字串的长度,另一个变量flag_x记录最长字串中的最后一个字符在字符串1中的位置。这样,在构造完矩阵之后也就找到了最长的字串。

?复杂度分析:

由上面算法描述中的分析可以知

文档评论(0)

1亿VIP精品文档

相关文档