数据结构常见问题(3)串
来源:互联网 发布:php curl json 编辑:程序博客网 时间:2024/06/06 03:19
1.从串S中删除所有和串T相同的字串。
分析:
此操作等同于“以空串置换所有和串T相同的字串”。
算法的目标是构造如上图的一个新串。
步骤:
如图从K开始截取,pos为搜索串的起始位置
算法的基本操作:
news = Concat(news, SubString(S, pos, k - pos));
下一次搜索串的起始位置为
pos = k + StrLength(T);
初始化:
n = StrLength(S); m = StrLength(T);
k = pos = 1; StrAssign(news, '');//赋值新串
while(k <= n - m + 1){
sub = SubString(S, k, m);
if(StrCompare(sub, T) != 0) k++;
else{
news = Concat(news, SubString(S, pos, k-pos));
pos += k; k = pos;
}
}
news = Concat(news, SubString(S, pos, n - pos + 1));//将尾部连接到新串。
2.求串S中出现的第一个最长重复字串及其位置。
分析:
所谓的“重复字串”指的是:
SubString(S, i, len) == SubString(S, j, len);
1 <= i < j <= StrLength(S)
1 <= len <= StrLength(S) - j + 1
例如:S='aaaaaaa'的最长重复字串为
T = ‘aaaaaa’;
具体解法:
利用求next函数的算法
next[j] != 0;表明在第j个字符之前存在一个长度为next[j] - 1的重复字串。
所以算法的基本思想为:
求串 pat = SubString(S, i, StrLength(S) - i + 1)的next函数值, i =1,2,...,StrLength(S)-1并从中求最大值。
所以最大重复字串的长度为6,为‘aabaaa’。
- 数据结构常见问题(3)串
- 数据结构常见问题(2)栈
- 数据结构常见问题
- 数据结构中的常见问题
- 糖尿病饮食(常见问题3)
- 常见问题3
- 常见问题3
- 重温数据结构:单链表的常见问题总结
- 重温数据结构:二叉树的常见问题汇总
- Hadoop使用常见问题以及解决方法(3)
- 大话数据结构3 - 串
- 数据结构(3):串
- 数据结构-串(字符串)
- 数据结构(四) 串
- 数据结构(续3)
- 数据结构(3树)
- 20,数据结构(3)
- 数据结构笔记(3)
- CLR via C# 学习笔记(2012/3/6)
- c++中变量的作用域
- 【转】深入理解java的clone
- JavaScript正则表达式(一)简介
- VS2008 自带SQL2005登陆问题
- 数据结构常见问题(3)串
- 最常见的20种VC++编译错误信息集合
- shell编程技术和实例--《linux0.01内核分析与操作系统设计》
- 打开第二次VB程序时通知第一次运行的程序并自己关闭的方法
- TCP定时器详解
- MAC 安装tomcat
- Trie—单词查找树
- SQL2000 由于登录失败而无法启动服务 1069错误解决方法
- 关于Google Chrome出现乱码的情况