由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这个题目怎么做?
相关主题
aababccbc remove abc(附面经) cap-exempt H1B 到cap-subject H1B的问题
F电面问个缺少逗号的数组赋值问题
facebook技术第三面面经 + 请前辈们分享一些onsite经验谢谢Epic Written Interview
两道F电面题问一个facebook的电面
一道字符串题目careerup 150里面的一道题。。
onsite遇到的几个面试题说好得FG面经,回馈板上GGJJ
问个题?做题做得很郁闷,求指点
MS on campus 面经, 攒人品,求bless问两道字符串的题
相关话题的讨论汇总
话题: match话题: str2话题: str1话题: regex话题: pop
进入JobHunting版参与讨论
1 (共1页)
C***U
发帖数: 2406
1
Simple regular expression match,only 3 possible patterns:

a-z : match a-z
a+ : match any numbers of a
.+ : repeat 1 - arbitrary times

和没用过regex的同学解释一下 例如
a+b 可以match : ab, aab, aaaaaaaaaaab
b.+b 可以match : bb, bab, b12345b
有什么好的办法没?
k****r
发帖数: 807
2
还做题呢啊,大哥
w****x
发帖数: 2483
3
/*
Write the actual code to parse a regular expression including "*",
which stands for 0 or more previous characters, "+", which
stands for 1 or more previous characters, and ".",
which stands for 1 exact character
*/
bool isMatch(const char *s, const char *p) {
assert(s && p);
if (*p == 0)
return *s == 0;
if (*(p+1) != '*')
return ((*p == '.' && *s != 0) || *s == *p) && isMatch(s+1, p+1);
const char* q = s;
while ((*p == '.' || *p == *q) && *q != 0)
{
if (isMatch(q, p+2))
return true;
q++;
}
return isMatch(q, p+2);
}
l****o
发帖数: 315
4
这递归动归都可以啊. 如果我没记错... 就是leetcode那道吧...而且条件还化简了一
点.
C***U
发帖数: 2406
5
递归时间太慢了

【在 l****o 的大作中提到】
: 这递归动归都可以啊. 如果我没记错... 就是leetcode那道吧...而且条件还化简了一
: 点.

h********6
发帖数: 285
6
这题递归可以接受,能够过leetcode

【在 C***U 的大作中提到】
: 递归时间太慢了
p*****2
发帖数: 21240
7
DP可以。不 知道greed 好不好搞
c********t
发帖数: 5706
8
Dear Googler,
你的题,从此不做解答
留一条非死不可的路让俺们走吧。
这题用leetcode re的解法不能解吗?看着更容易啊。

【在 C***U 的大作中提到】
: Simple regular expression match,only 3 possible patterns:
:
: a-z : match a-z
: a+ : match any numbers of a
: .+ : repeat 1 - arbitrary times
:
: 和没用过regex的同学解释一下 例如
: a+b 可以match : ab, aab, aaaaaaaaaaab
: b.+b 可以match : bb, bab, b12345b
: 有什么好的办法没?

N*********6
发帖数: 4372
9
b.+b match不了bb吧,.+必须要有一个字符出现至少一次

【在 C***U 的大作中提到】
: Simple regular expression match,only 3 possible patterns:
:
: a-z : match a-z
: a+ : match any numbers of a
: .+ : repeat 1 - arbitrary times
:
: 和没用过regex的同学解释一下 例如
: a+b 可以match : ab, aab, aaaaaaaaaaab
: b.+b 可以match : bb, bab, b12345b
: 有什么好的办法没?

p*****2
发帖数: 21240
10

昨天晚上想问这个来着

【在 N*********6 的大作中提到】
: b.+b match不了bb吧,.+必须要有一个字符出现至少一次
相关主题
onsite遇到的几个面试题(附面经) cap-exempt H1B 到cap-subject H1B的问题
问个题?问个缺少逗号的数组赋值问题
MS on campus 面经, 攒人品,求blessEpic Written Interview
进入JobHunting版参与讨论
C***U
发帖数: 2406
11
有人说可以用finite state machine的做法
不知道有人试过么?

【在 c********t 的大作中提到】
: Dear Googler,
: 你的题,从此不做解答
: 留一条非死不可的路让俺们走吧。
: 这题用leetcode re的解法不能解吗?看着更容易啊。

C***U
发帖数: 2406
12
应该是可以0次吧
这个题目不是我的
直接拷贝的

【在 N*********6 的大作中提到】
: b.+b match不了bb吧,.+必须要有一个字符出现至少一次
l*****a
发帖数: 14598
13
这种题我最早都这么做
后来才发现有leetcode的做法

【在 C***U 的大作中提到】
: 有人说可以用finite state machine的做法
: 不知道有人试过么?

l****o
发帖数: 315
14
Finite state machine? AC算法?

【在 C***U 的大作中提到】
: 有人说可以用finite state machine的做法
: 不知道有人试过么?

C***U
发帖数: 2406
15
大牛给个你说的leetcode的解法的链接

【在 l*****a 的大作中提到】
: 这种题我最早都这么做
: 后来才发现有leetcode的做法

C***U
发帖数: 2406
16
贴个出来看看
呵呵
或者给个链接

【在 l****o 的大作中提到】
: Finite state machine? AC算法?
c********t
发帖数: 5706
17
http://www.leetcode.com/2011/09/regular-expression-matching.htm

【在 C***U 的大作中提到】
: 贴个出来看看
: 呵呵
: 或者给个链接

t****a
发帖数: 1212
18
这个是map .*的dp算法,用memoize recursion实现,包括测试数据。改成.+很简单。
懒得改了。
(defn ch-match [c1 c2]
(if (= c2 \.)
true
(if (= c1 c2)
true
false)))
(def str-match
(memoize
(fn [str1 str2]
(cond (and (empty? str1) (empty? str2)) true
(or (empty? str1) (empty? str2)) false
:else (let [c1 (peek str1)
c2 (peek str2)]
(if (= c2 \*)
(let [c3 (peek (pop str2))]
(if (ch-match c1 c3)
(or (str-match (pop str1) str2) (str-match str1 (
pop (pop str2))) (str-match (pop str1) (pop (pop str2))))
(str-match str1 (pop (pop str2)))))
(if (ch-match c1 c2)
(str-match (pop str1) (pop str2))
false)))))))
(defn regex [str1 str2]
(let [s1 (vec (str "a" str1))
s2 (vec (str "a" str2))]
(str-match s1 s2)))
(regex "abbcacbbbbbabcbaca" "a*a*.*a*.*a*.b*a*") ; true
(regex "babcacbbbacaacca" "a*.b.*a.*.*a*b*c") ; false
(regex "baccbbcbcacacbbc" "c*.*b*c*ba*b*b*.a*") ; true
(regex "bbaaaacabccbcac" "b*b*a*c*c*a*c*.*") ; true
(regex "bacacbacaaabccbcbaa" "a*.c*c*c*a*b*..*") ; true
(regex "ababccbabababbbbc" ".*a*ba*.a*b*a*.*b.*") ; true
(regex "aaaaabaccbbccababa" "a*b*.*c*c*.*.*.*c") ; false
(regex "ababbcaaabbaccb" "c*c*..*a*a*a*.*") ; true
C***U
发帖数: 2406
19
这个是递归的么

【在 c********t 的大作中提到】
: http://www.leetcode.com/2011/09/regular-expression-matching.htm
c********t
发帖数: 5706
20
这题应该有不用递归的DP解法吧?
可惜我做不出。求高人。

【在 C***U 的大作中提到】
: 这个是递归的么
d**********x
发帖数: 4083
21
regex本质上就是NFA或者DFA。。。

【在 C***U 的大作中提到】
: 有人说可以用finite state machine的做法
: 不知道有人试过么?

A*****i
发帖数: 3587
22
AC自动机加DFA就可以
1 (共1页)
进入JobHunting版参与讨论
相关主题
问两道字符串的题一道字符串题目
像Leetcode: Text Justification这种边界条件多的题怎么办?onsite遇到的几个面试题
做了一道edit distance,讨论DP的初始化阶段问个题?
find first diff of 2 stringsMS on campus 面经, 攒人品,求bless
aababccbc remove abc(附面经) cap-exempt H1B 到cap-subject H1B的问题
F电面问个缺少逗号的数组赋值问题
facebook技术第三面面经 + 请前辈们分享一些onsite经验谢谢Epic Written Interview
两道F电面题问一个facebook的电面
相关话题的讨论汇总
话题: match话题: str2话题: str1话题: regex话题: pop