我最近接受了谷歌软件工程职位的面试,问题是关于构建模式匹配器。
所以你必须建立
boolean isPattern(String givenPattern, String stringToMatch)
执行以下操作的函数:
givenPattern
是一个字符串,包含:
a) 'a'-'z' chars
b) '*' chars which can be matched by 0 or more letters
c) '?' which just matches to a character - any letter basically
所以电话可能是这样的
isPattern("abc", "abcd")
- 返回 false,因为它与模式不匹配('d' 是额外的)
isPattern("a*bc", "aksakwjahwhajahbcdbc")
, 这是真的,因为我们在开头有一个 'a',后面有很多字符,然后它以 "bc" 结尾
isPattern("a?bc", "adbc")
当模式的每个字符在给定字符串中匹配时返回 true。
在采访中,时间很短,我想可以通过模式来查看一个字符是字母、* 还是?然后分别匹配给定字符串中的字符。但这最终变成了一组复杂的 for 循环,我们未能在给定的 45 分钟内得出结论。
有人可以告诉我他们将如何快速有效地解决这个问题吗?
非常感谢!