由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 面试题:根据输入字符串,返回正则表达式
相关主题
A 家两轮电话面试面经攒人品onsite遇到的几个面试题
求教一道关于string的Google面试题~~问一个facebook的电面
简单的正则表达式的字符串匹配做题做得很郁闷,求指点
攒人品&&求好运&&发面经:A的第一电find first diff of 2 strings
准备好好做做leetcode上的题F电面
问两道字符串的题求问一道算法题~
Leetcode 正则表达式那道题目的例子贡献一道电话面试题
正则表达式的问题问个经典题目,感觉没错啊,可是过不了OJ,超时了,请大神帮着
相关话题的讨论汇总
话题: string话题: str1话题: str2话题: 输入话题: 正则表达式
进入JobHunting版参与讨论
1 (共1页)
k****t
发帖数: 184
1
输入两个string,输出regular expression能够match这两个string,不能简单的输出一
个".*",要尽量严格缩小范围。
String getRegex(String str1, String str2) {
...
}
我当时能想到的办法是,先找到共同的部分,然后中间插入".*"连成一个串。
面试官说:"This is not a technically optimized solution."
给出的提示是,让我想想如果前缀相同,或者后缀相同的情况, 以及输入的是一个字
符串集合。然后就没有其他提示了。后来时间也不够,就结束了。
请问,大家有没有什么好想法?
d********e
发帖数: 239
2
edit distance,差异部分 用二选一, 多出来的部分用?匹配

【在 k****t 的大作中提到】
: 输入两个string,输出regular expression能够match这两个string,不能简单的输出一
: 个".*",要尽量严格缩小范围。
: String getRegex(String str1, String str2) {
: ...
: }
: 我当时能想到的办法是,先找到共同的部分,然后中间插入".*"连成一个串。
: 面试官说:"This is not a technically optimized solution."
: 给出的提示是,让我想想如果前缀相同,或者后缀相同的情况, 以及输入的是一个字
: 符串集合。然后就没有其他提示了。后来时间也不够,就结束了。
: 请问,大家有没有什么好想法?

m*****n
发帖数: 2152
3
考官的意思是不是这个:
str1 = "aaab"
str2 = "ab"
reg = "a*b" 而不是 "a.*b"
str1 = "aaabbb"
str2 = "ab"
reg = "a*b*" ?

【在 k****t 的大作中提到】
: 输入两个string,输出regular expression能够match这两个string,不能简单的输出一
: 个".*",要尽量严格缩小范围。
: String getRegex(String str1, String str2) {
: ...
: }
: 我当时能想到的办法是,先找到共同的部分,然后中间插入".*"连成一个串。
: 面试官说:"This is not a technically optimized solution."
: 给出的提示是,让我想想如果前缀相同,或者后缀相同的情况, 以及输入的是一个字
: 符串集合。然后就没有其他提示了。后来时间也不够,就结束了。
: 请问,大家有没有什么好想法?

k****t
发帖数: 184
4
应该是后者,"."是需要的

【在 m*****n 的大作中提到】
: 考官的意思是不是这个:
: str1 = "aaab"
: str2 = "ab"
: reg = "a*b" 而不是 "a.*b"
: str1 = "aaabbb"
: str2 = "ab"
: reg = "a*b*" ?

m*****n
发帖数: 2152
5
我刚试了,前者是可以的,后者也可以。但是前者应该更优化。

【在 k****t 的大作中提到】
: 应该是后者,"."是需要的
M**********7
发帖数: 378
6
这题有点变态了。估计题的细节条件还是要扣细点。
广义来说正则文法是不可学习的。
简单的说就是到底允许不允许扩大结果范围,还是必须严格地只能匹配str1&str2。
如果允许扩大结果范围,那么.*和a*对于aa和a没什么不同,最简定义到底是什么。
如果不允许扩大结果范围,那么就按ksrent这样的思路,不同的时候用个|二选一,注
意不能用.。

【在 k****t 的大作中提到】
: 输入两个string,输出regular expression能够match这两个string,不能简单的输出一
: 个".*",要尽量严格缩小范围。
: String getRegex(String str1, String str2) {
: ...
: }
: 我当时能想到的办法是,先找到共同的部分,然后中间插入".*"连成一个串。
: 面试官说:"This is not a technically optimized solution."
: 给出的提示是,让我想想如果前缀相同,或者后缀相同的情况, 以及输入的是一个字
: 符串集合。然后就没有其他提示了。后来时间也不够,就结束了。
: 请问,大家有没有什么好想法?

m*****n
发帖数: 2152
7
我猜想 最简定义是用的通配符最少。
比如 * 比 .* 简化, * 也比 .. 简化,.*比.....简化。
如果是这个思路,可以分两步,第一步用楼主的方法,第二部看看.* 能不能简化成 *
或者是. 。
但是还有问题没解决。
比如 "adabbccc" 和 "abbc"
reg = "a.*bbc*" 还是 ".*abbc*" ? 两个好像都可以。

【在 M**********7 的大作中提到】
: 这题有点变态了。估计题的细节条件还是要扣细点。
: 广义来说正则文法是不可学习的。
: 简单的说就是到底允许不允许扩大结果范围,还是必须严格地只能匹配str1&str2。
: 如果允许扩大结果范围,那么.*和a*对于aa和a没什么不同,最简定义到底是什么。
: 如果不允许扩大结果范围,那么就按ksrent这样的思路,不同的时候用个|二选一,注
: 意不能用.。

k****t
发帖数: 184
8
那样的话 ".*"就全部搞定了。

【在 m*****n 的大作中提到】
: 我猜想 最简定义是用的通配符最少。
: 比如 * 比 .* 简化, * 也比 .. 简化,.*比.....简化。
: 如果是这个思路,可以分两步,第一步用楼主的方法,第二部看看.* 能不能简化成 *
: 或者是. 。
: 但是还有问题没解决。
: 比如 "adabbccc" 和 "abbc"
: reg = "a.*bbc*" 还是 ".*abbc*" ? 两个好像都可以。

m*****n
发帖数: 2152
9
在“要尽量严格缩小范围”条件下,通配符最少。
换句话说,maximize common的字符, minimize 通配符 。

【在 k****t 的大作中提到】
: 那样的话 ".*"就全部搞定了。
s****a
发帖数: 794
10
正则表达式没法写吧,如果要严格的缩小范围那就是str1和str2两个pattern里选了。
只有这两个满足条件。我觉得要不就是他自己一知半解,被坑了,要不就是有别的条件
没注意到。
1 (共1页)
进入JobHunting版参与讨论
相关主题
问个经典题目,感觉没错啊,可是过不了OJ,超时了,请大神帮着准备好好做做leetcode上的题
请教G家的一个面试题问两道字符串的题
请问关于字符串的面试题一般用c-style还是string class?Leetcode 正则表达式那道题目的例子
请教一道面试题正则表达式的问题
A 家两轮电话面试面经攒人品onsite遇到的几个面试题
求教一道关于string的Google面试题~~问一个facebook的电面
简单的正则表达式的字符串匹配做题做得很郁闷,求指点
攒人品&&求好运&&发面经:A的第一电find first diff of 2 strings
相关话题的讨论汇总
话题: string话题: str1话题: str2话题: 输入话题: 正则表达式