题目:
给定三个字符串,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:]))
}
版权声明:本文为simplelovecs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。