Regular Expression Matching

来源:互联网 发布:数据分析材料 编辑:程序博客网 时间:2024/05/29 17:03

原题: Implement regular expression matching with support for '.' and'*'.

解释一下就是'.’代表任意一个字母,‘*’代表之前那个字母出现了0次或者多次,在此基础上判断两个字符串是否匹配

这里的难点就在‘*’上了,具体方法用的是递归

代码如下:

public class Solution {        public boolean isMatch(String s, String p) {          return helper(s,p,0,0);      }      private boolean helper(String s, String p, int i, int j)      {         //判断p字符串为零(j意义上的为零)时,s字符串是否为零(i意义上)        if(j==p.length())              return i==s.length();         //p字符串长度为1,或者p字符串此时的第二个字符不是‘*’        if(j==p.length()-1 || p.charAt(j+1)!='*')          {              if(i==s.length()|| s.charAt(i)!=p.charAt(j) && p.charAt(j)!='.')                  return false;              else                 //递归继续                return helper(s,p,i+1,j+1);          }          //p.charAt(j+1)=='*'          while(i<s.length() && (p.charAt(j)=='.' || s.charAt(i)==p.charAt(j)))          {              if(helper(s,p,i,j+2))                  return true;              i++;          }          return helper(s,p,i,j+2);      }  }


0 0
原创粉丝点击