16、字符串的近似周期研究

字符串的近似周期研究

1. 预备知识

在开始研究字符串的近似周期之前,我们需要了解一些基本的字符串概念。
- 字符串定义 :字符串是来自字母表 $\Sigma$ 的零个或多个字符的序列。字母表 $\Sigma$ 上的所有字符串的集合记为 $\Sigma^ $,空字符串记为 $\epsilon$。字符串 $x$ 的第 $i$ 个字符记为 $x[i]$,从位置 $i$ 开始到位置 $j$ 结束的子字符串记为 $x[i..j]$。
-
前缀、后缀和子序列 :如果 $x = wu$,其中 $u \in \Sigma^ $,则称字符串 $w$ 是 $x$ 的前缀;如果 $x = uw$,则称 $w$ 是 $x$ 的后缀。如果 $w$ 是通过从 $x$ 中删除零个或多个字符(在任意位置)得到的,则称 $w$ 是 $x$ 的子序列,或者 $x$ 是 $w$ 的超序列。例如,“ace” 是 “aabcdef” 的子序列。

2. 字符串距离度量

为了衡量两个字符串之间的相似性(或距离),我们使用了不同的度量方法,主要分为绝对度量和相对度量。
- 绝对度量
- 汉明距离 :两个字符串 $x$ 和 $y$ 之间的汉明距离定义为将 $x$ 转换为 $y$ 所需的最小更改操作数。
- 编辑距离 :编辑距离定义为将 $x$ 转换为 $y$ 所需的最小更改、插入和删除操作数。
- 惩罚矩阵 :在

近似周期串 小明发现有的字符串中蕴含着一些规律,但是它们又和普通的周期串有点不一样。例如:ABCABDABDABE。如果以3为周期,可以看到其中 包含“ABC”、“ABD”和“ABE”等子串,其中“ABD”出现了两次。 这些子串两两之间最多只有某一位上的字符不相同,其他位置上的字符都一样。小明将其称为“近似串”,由多个“近似串”组成的字符串称为“近 似周期串”。“近似周期串”中的每一个“近似串”的长度需大于等于2。 需要注意的是“ABCABBACD”并不是一个“近似周期串”。如果以3为周期,其子串包 括“ABC”、“ABB”和“ACD”,“ABB”与“ACD”、“ABC”与“ACD”均存在两个位置上的字符不相同,因此不是“近似周期串”。特别 的,“AAAAAA”也是一个“近似周期串”,因为它满足上述“近似周期串”的定义。 现在给你一个字符串,请编写一个程序判断该字符串是否是以3为周期的“近似周期串”。 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M 输入描述: 多组输入,第1行输入一个正整数T表示输入数据的组数。 对于每一组输入数据:输入一个长度不超过1000的字符串字符串中只包含大写英文字母。 输出描述: 针对每一组输入数据,输出该字符串是否是以3为周期的“近似周期串”,如果是输出“Yes”,否则输出“No”。
07-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值