假设允许模式串p中可以出现能与任意字符串(包括长度为0的空串)匹配的回隙字符 ,如模式串abbac可在主串cabccbacbacab中产生如图9-3所示的匹配.间隙字符可在模式串中出现任意多次,但不允许在主串中出现.
试设计一个多项式时间算法,确定在主串中能否找到与模式串p匹配的子串,并分析算法的计算时间复杂性.
问题描述:给定2个长度分别为n和m的序列x[0...n-1]和y[0...m-1],以及d个约束字符串多子串排斥约束的最长公共子序列问题就是要找出x和y的不含为其子串的最长公共子序列
算法设计:设计一个算法,找出给定序列x和y的不含为其子串的最长公共子序列.
数据输入:重文件input.txt提供输入数据.文件的第1行中给出正整数d,表示约束字符串个数.接下来的2行分别给出序列x和y.最后d行的每行给出一个约束字符串.
结果输出:将计算出的x和y的不含为其子串的最长公共子序列输出到文件output.txt中.文件的第1行输出最长公共子序列.第2行输出最长公共子序列的长度.
算法设计:设计一个算法,找出给定字符串X的最长重复子串.
数据输入:由文件input.txt提供输入数据.文件的第1行中给出字符串X.
结果输出:将计算出的字符串X的最长重复子串输出到文件output.txt中.
文件的第1行是最长重复子串的长度.文件的第2行是最长重复子串.
算法设计:设计一个算法,找出给定序列x和y的包含s为其子串的最长公共子序列.
数据输入:由文件input.txt提供输入数据.文件的第1行中给出正整数,分别表示给定序列x、y和约束字符串s的长度.接下来的3行分别给出序列x、y和约束字符串s.
结果输出:将计算出的x和y的包含s为其子串的最长公共子序列的长度输出到文件output.txt中.
用串v替换串t在串s中的所有出现;若t不是s的子串,则串s不变。例如,若串s为“aabbabebaabaaacbab”,串t为“bab”,串v为“abdc”,则执行replace操作后,串s中的结果为“aababdccbaabaaacabdc”.试利用字符串的基本运算实现这个替换操作。
用有限集合和集合运算描述上的下述语言(例如偶数长度的串的集合是{aa,ab,ba,bb}):
(a)奇数长度的串的集合。
(b)恰好包含一个a的串的集合.
(c)或者以一个a开始,或者以两个b结束,或者两者都具备的串的集合。
(d)至少含有3个连接s的串的集合。
(e)包含子串“bbab”的串的集合,