10.正则表达式匹配
给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。
'.'匹配任意单个字符
'*' 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。
来源:力扣(LeetCode)
链接:https://leet代码-cn。com/problems/正则表达式匹配
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解决方案类{
私有布尔值无效(字符串s,字符串p){ 0
for(int I=0;I s . length();I){ 0
if(s . charat(I)=' * ' | | s . charat(I)=' . ') {
返回错误的
}
}
if(p . charat(0)=' * '){ 0
返回错误的
}
for(int I=1;I p . length();I){ 0
if(p . charat(I)=' * ' p . charat(I-1)=' *)
返回错误的
}
}
返回真;
}
公共布尔值isMatch(字符串s,字符串p){ 0
if(s==null | | p==null){ 0
返回错误的
}
if(!isValid(s,p)){ 0
返回错误的
}
布尔[][] dp=新布尔[标准长度()1][标准长度()1];
dp[0][0]=真;
(同Internationalorganizations)国际组织索引=1;
而(索引p . length()。p . charat(索引)=' * '){ 0
DP[0][索引1]=真;
索引=2;
}
for(int I=1;I=s . length();I){ 0
for(int j=1;j=p .长度();j) {
if(p . charat(j-1)=' *)
DP[I][j]=DP[I][j-2]| | DP[I-1][j](p . charat(j-2)==s . charat(I-1)| | p . charat(j-2)=' ');
} else {
DP[I][j]=DP[I-1][j-1](s . charat(I-1)==p . charat(j-1)| | p . charat(j-1)=' ');
}
}
}
返回DP[s . length()][p . length()];
}
}
心之所向,素履以往生如逆旅,一苇以航
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/145041.html