问题描述
你有两个字符串,即pattern和value。 pattern字符串由字母”a”和”b”组成,用于描述字符串中的模式。例如,字符串”catcatgocatgo”匹配模式”aabab”(其中”cat”是”a”,”go”是”b”),该字符串也匹配像”a”、”ab”和”b”这样的模式。但需注意”a”和”b”不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。
Example
示例1
输入: pattern = “abba”, value = “dogdogdogdog”
输出: true
解释: “a”=”dogdog”,b=””,反之也符合规则
示例2
输入: pattern = “abba”, value = “dogcatcatdog”
输出: true
Note
- 0 <= len(pattern) <= 1000
- 0 <= len(value) <= 1000
- 你可以假设pattern只包含字母”a”和”b”,value仅包含小写字母。
题目链接:面试题 16.18. 模式匹配 (难度:中等)
思路
可以将问题看成是一个带有约束条件的子串分割问题,其中约束条件为分割后的子串需要和 pattern 能够成功匹配。由于 pattern 中只包含 a 和 b,分别代表 value 的两种不同的子串。因此我们可以用回溯的方法,先尝试性地枚举 a 和 b 所可能代表的全部子串,一旦将 a 和 b 确定后,再利用 a 和 b 对 value 进行匹配。
注意:本题中空串也是子串之一
代码
1 | class Solution { |
- 本文作者: Phoenix
- 本文链接: https://phoenix500526.github.io/2020/06/22/Leetcode-面试题-16-18-模式匹配-DFS-子串分割问题/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!