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”
时,会超时。