算法题:Zipper
2016-04-26 17:30
288 查看
题目:
POJ 2192: http://poj.org/problem?id=2192给定三个字符串,A,B,C。A和B的长度和等于C。判断字符串C能否由字符串A、B中的字符组成。要求,原来A 和 B 中的字符作为C中的字符时,还必须保持字符在原串中的顺序。
例如:
cat tree tcraete
cat tree catrtee
cat tree cttaree
Data set 1: yes
Data set 2: yes
Data set 3: no
思路:
最简单的使用递归法解决。假设 A中的前 i 个字符 和 B 中的前 j 个字符 可以构成 C中的前 i+j个字符。那么 如果A中的前 i+1 个字符和B中的前 j 个字符可以构成 C 中的前 i+j+1 个字符 或者 如果A中的前 i 个字符和B中的前 j+1 个字符可以构成 C 中的前 i+j+1 个字符。那么显然 C 中的前 i+j+1 个字符可由字符串A 和 字符串 B 中的前i+j+1 个字符构成。
Golang:
func Zipper(a, b, c string) bool { if len(a) == 0 { return b == c } if len(b) == 0 { return a == c } return (a[0] == c[0] && Zipper(a[1:], b, c[1:])) || (b[0] == c[0] && Zipper(a, b[1:], c[1:])) }
相关文章推荐
- c++第四次作业
- Android 开发 voip/sip 程序
- Python笔记(1)变量与表达式
- Oracle Golden Gate - 概念和机制 (ogg)
- 编程语言及其应用
- Codevs_1690_开关灯_(线段树)
- 数据库增删改查
- 浮点数IEEE-754标准
- java如何调用服务端的WSDL接口
- HTML——2(HTML 文件的结构)
- datatables参数配置详解
- 最近学习的memcached+服务器编程+nginx博客地址记录
- poj 2386 Lake Counting
- js里面“===”与“==”的区别
- [No000086]C#foreach集合被改变,报错处理方案
- Zepto的天坑汇总
- java如何调用服务端的WSDL接口
- mongdb 学习
- HDU5606 tree 无向图 dfs求联通块
- win10系统wifi信号很弱怎么办?win10系统wifi不稳定解决方法