文章目录
Leetcode算法系列将详细讲解一些经典的面试算法题。
今天的题目是个人非常喜欢的一个,题目的名字叫做“Interleaving String”,这个题目是什么意思呢?
理解题意
Interleaving 从字面上讲是交错交叉的意思,给定两个字符串s1:"a"和s2:“b”,那么对于s3:"ab"我们说s3是s1和s2“交错”形成的一个字符串,也就是说对于s3中的一个字符,这个字符要么来自于s1要么来自于s3且s1和s2中的字符只能使用一次。
因此对于s1 = “ab”, s2 = “cd”, s3 = “acbd”,我们可以说s3可以由s1和s2交错形成,过程是这样的:
- 使用s1的字符a
- 使用s2的字符c
- 使用s1的字符b
- 使用s2的字符d
这样就形成了s3:“acdb"
而对于s1 = “ab”, s2 = “cd”, s3 = "adbc"我们说s3不可以由s1和s2交错形成,原因很简单,过程是这样的:
- s3的第一个字符是a,因此必须使用s1的第一个字符a
- s3的第二个字符是d,但是此时可以用的s1的字符是b以及s2的字符c,无论选择s1亦或是选择s2都不能形成字符d,因此s3不可以由s1和s2交错形成
理解了题意后你能想到该怎么解决这个问题吗?
解决方法一:最简单解法
通常我们说在面试时针对算法题如果一下想不到最优解可以首先想一个最简单的时间复杂度