您的位置:首页 > 编程语言 > Java开发

0010_Regular Expression Matching

2017-05-22 22:12 288 查看

JAVA

方法一

使用递归的方式进行判断,写了近1小时,最后显示超时。。。

public boolean isMatch(String s, String p) {
if (s.length() == 0 ) {
return equivalentNull(p);
}
if (s.length() != 0 && p.length() == 0) {
return false;
}
if (s.length() > 0 && s.charAt(0) != p.charAt(0) && p.charAt(0) != '.') {
if ( p.length() > 1 && p.charAt(1) == '*'){
return isMatch(s, p.substring(2));
}else{
return false;
}
}
if (p.length() > 1 && p.charAt(1) == '*') {
return isMatch(s, p.substring(2)) || isMatch(s.substring(1), p.substring(2)) || isMatch(s.substring(1), p);
}
return isMatch(s.substring(1), p.substring(1));
}
//equivalentNull:用来判断剩余的字符串是否可以等价于空字符串
boolean equivalentNull(String s){
if (s.length() == 0){
return true;
}else if (s.length() > 1 && s.charAt(1) == '*'){
return equivalentNull(s.substring(2));
}else {
return false;
}
}


当测试案例为

“aaaaaaaaaaaaab”

“a*a*a*a*a*a*a*a*a*a*c”

时,会超时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 练习