Redian新闻
>
2011新年好! 美女不朽
avatar
2011新年好! 美女不朽# Fashion - 美丽时尚
a*e
1
这个题https://oj.leetcode.com/problems/regular-expression-matching/
意思是说
bool isMatch(const char *s, const char *p)
s是个普通string (literal string)而p是regular expression是吗?
我看wiki上说也可以两个regular expressions match。我开始自己写的时候考虑s和p
都有*,.的情况,但后来写不下去了。
http://en.wikipedia.org/wiki/Regular_expression
看到的这个答案没有考虑s有*,.的情况,但OJ444个tests都通过了。
我还是不懂这一段的逻辑
while(*p==*s||(*p=='.'&&*s!='\0'))
{
if (isMatch(s,p+2))
return true;
s++;
}
bool isMatch( const char *s, const char *p) {
if (*p=='\0')
return *s=='\0';

if (*(p+1)!='*'){
if (*p==*s||(*p=='.'&&*s!='\0'))
return isMatch(s+1,p+1);
else
return false;
}
else {
while(*p==*s||(*p=='.'&&*s!='\0'))
{
if (isMatch(s,p+2))
return true;

s++;
}
return isMatch(s,p+2);
}

}
avatar
l*n
2
听证会那几天拼命护盘那熊样,还弄出很多分析家鼓励买啊买.
还有那个自主餐也赶紧出来造势.
看它能把股票都自己收购了.
avatar
a*e
4
还有类似的题
https://oj.leetcode.com/problems/wildcard-matching/
我写的这种TLE,请问怎么计算这种recursion的复杂度啊?
bool isMatch(const char *s, const char *p) {
if (*p=='\0')
return (*s=='\0');

if (*p!='*')
{
if (*s==*p&&*s!='\0'||*p=='?')
{
s++;
p++;
return isMatch(s,p);
}
else
return false;
}
else
{
while(*p=='*')
p++;

if (*p=='\0')
return true;
bool f = isMatch(s,p);
while(!f &&*s!='\0')
{
s++;
f = isMatch(s,p);
}

if (!f)
return false;
else
{
return isMatch(s++,p++);
}

}
avatar
f*1
5
How to post directly?
avatar
a*e
6
up!
avatar
f*1
7
Anyone knows?
avatar
t*e
8
mark
avatar
l*e
9
avatar
a*e
10
?
avatar
l*e
11
avatar
a*e
12
再顶
avatar
f*1
13
Thanks!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。