package test;
public class Match {
public boolean match(String str, String pattern){
if(str == null || pattern==null)
return false;
return matchCore(str, pattern);
}
public boolean matchCore(String str, String pattern){
if(str.equals(pattern)&& str.length()==1 && pattern.length()==1){
return true;
}
if(str.length() !=1 && pattern.length() == 1){
return false;
}
String patternPart = pattern.charAt(0)+"";
String strPart = str.charAt(0)+"";
if(("*").equals(pattern.charAt(1)+"")){
if(patternPart.equals(strPart)||((".").equals(patternPart) && str.length()>=1)){
return matchCore(str.substring(1), pattern.substring(2))
|| matchCore(str.substring(1), pattern)
|| matchCore(str, pattern.substring(2));
}else{
return matchCore(str, pattern.substring(2));
}
}
if(patternPart.equals(strPart) || ((".").equals(patternPart)&&str.length()>=1)){
return matchCore(str.substring(1), pattern.substring(1));
}
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String string = "abbbacccadddabcd";
// String string = "aaa";
// String pattern = "a.a";
String pattern = "ab*ac*a.*abcd";
// String pattern = "ab*ac*a";
System.out.println(new Match().match(string, pattern));
}
}
剑指Offer 53题 正则表达式匹配 Java版
最新推荐文章于 2023-07-18 09:58:21 发布