算法_00_KMP 的应用
来源:互联网 发布:java博客推荐 编辑:程序博客网 时间:2024/06/09 19:42
接着上一个blog,记录下可以用 KMP 来解的题目
问题1
给定一个字符串str1,只能往str1的后面添加字符变成str2。 要求1:str2必须包含两个str1,两个str1可以有重合,但是不 能以同一个位置开头。
要求2:str2尽量短
最终返回str2
思路:
- 找出包含 str1最后一个字符的最大前缀后缀匹配字符串的长度endNext
- 在 str1后面添加 endNext位置开始的 str1子串,得到 str2
问题2:
给定两个二叉树T1和T2,返回T1的某个子树结构是否与T2的结构相等。
思路:
1. 把T1和 T2分别都序列化,序列化的时候可以采用:1代表有值,#代表为空,特殊符号分隔开两个节点。我们采用先序遍历,例如:1_1##_1#_#,可以准确还原下面这颗二叉树(==这图)
1
/ \
1 1
/ \ / \
null null null null
2. 然后该题目就可以转化为判断 str1中是否包含str2字符串来解答。
突然想起来,T1包含 T2的结构,要求 T2是 T1中的一个子树,不能是只包含一部分。
看到弹幕里有人问,如何确保这一点?我想了下,是因为序列化的时候,所有叶子节点下面没有子节点,为空,也要求必须用#表示。不能为空就不表示。
阅读全文
0 0
- 算法_00_KMP 的应用
- 算法_00_KMP
- 递归算法的应用
- 【算法】堆的应用
- [MD5]算法的应用
- fzu1096prim算法的应用
- 位图算法的应用
- 算法的应用-chinaunix
- MD5算法的应用
- kmp算法的应用
- Viterbi算法的应用
- 图的应用算法
- 排序算法的应用
- 贝叶斯算法的应用
- Hash算法的应用
- 递归算法的应用
- 一些算法的应用
- 递归算法的应用
- Tomcat虚拟主机的配置
- 各种设计模式的总结与举例
- IIS站点及设置项备份与恢复
- ios-数组排序
- bootsect.s分析
- 算法_00_KMP 的应用
- 网络路由设计的基础
- Ubuntu通过PPTP协议使用VPN
- UE4之制作局域网游戏
- Spring Boot教程
- bzoj 1295: [SCOI2009]最长距离(SPFA)
- android 动态折线图
- apache shiro学习笔记(四) Web Support
- 作业一