字符串算法集合.ppt

字符串循环最小表示 樊向宇 359419163@ 问题引入 有两条环状的项链,每条项链上各有N个多种颜色的珍珠,相同颜色的珍珠,被视为相同。 问题:判断两条项链是否相同。 简单分析:由于项链是环状的,因此循环以后的项链被视为相同的,如图的两条项链就是一样的。 Problem 给定两个长度相等的字符串,|s1|=|s2|, 判断它们是否是循环同构的。 解法 可转化为以S1+S1为母串,S2为模式串的匹配问题 “最小表示法”在本题的应用 如M(‘bbbaab’)=4 设函数M(s)返回值意义为: 从s的第M(s)个字符引起的s的一个循环表示是s的最小表示。 若有多个值,则返回最小的一个。 现在换一种思路: s=‘b b b a a b’ “最小表示法”在本题的应用 现在换一种思路: 1 … |s1| s1: 1 … |s2| s2: u: w: 1 … |s1| |s1|+1 … 2*|s1| 1 … |s2| |s2|+1 … 2*|s2| 设u=s1+s1,w=s2+s2并设指针i,j指向u,w第一个字符 “最小表示法”在本题的应用 u: 1 … M(s1) … … 2*|s1| w: 1 … … M(s2) … 2*|s2| i j 现在换一种思路: 如果s1和s2是循环同构的,那么当i,j分别指向M(s1),M(s2)时,一定可以得到u[i→i+

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档