剑指Offer 53题 正则表达式匹配 Java版

来源:互联网 发布:ipv4无网络访问权限 编辑:程序博客网 时间:2024/06/03 09:35
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 stubString 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));}}

0 0