美文网首页
剑指offer19题:正则表达式匹配

剑指offer19题:正则表达式匹配

作者: 灰化肥发黑会挥发 | 来源:发表于2018-12-27 12:19 被阅读0次

请实现一个函数用来匹配包含‘.’和‘’的正则表达式。模式中的字符'.'表示任意一个字符,而‘’表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。

思路:思路为从左到右遍历,假设模式串为pattern,模式串为str,分三种情况
  1. 当为普通字符时,判断str[i]和pattern[i]是否相等,如果不相等,则返回fase,如果相等str[i+1],pattern[i+1]
  2. 当为‘.’时,继续往下走,str[i+1],pattern[i+1]。
  3. 当'i+1'为‘*’时候,比较复杂,可以是{str[i+1],pattern]},{str[i+1],pattern[i+2]},{str[i],pattern[i+2]}
  4. 测试集,含有‘.’,'*'的字符串,空字符串,
public class MatchREG {
    public boolean match(String pattern,String str){
     if(str==null||pattern==null) return false;
     char[] patternChar = pattern.toCharArray();
     char[] strChar = pattern.toCharArray();
     return matchCore(patternChar,strChar,0,0);
    }
    public boolean matchCore(char[] pattern,char[] str,int pIndex,int sIndex){
        if(pIndex==str.length-1&&sIndex==str.length-1)
            return true;
        if(pIndex>=pattern.length-1) return false;
        if(sIndex>=str.length-1) return false;
        if(pIndex+1=='*'){
            if(str[pIndex]==pattern[sIndex])
            return matchCore(pattern,str,pIndex,sIndex+1)||matchCore(pattern,str,pIndex+2,sIndex+1)||matchCore(pattern,str,pIndex+2,sIndex);
            else return matchCore(pattern,str,pIndex+2,sIndex);
        }
         if(str[sIndex]==pattern[pIndex]||pattern[pIndex]=='.')
            return matchCore(pattern,str,pIndex+1,sIndex+1);
        return false;
    }
}

相关文章

  • 剑指offer19题:正则表达式匹配

    请实现一个函数用来匹配包含‘.’和‘’的正则表达式。模式中的字符'.'表示任意一个字符,而‘’表示它前面的字符可以...

  • 正则表达式匹配

    《剑指offer》面试题19:正则表达式匹配 题目:请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字...

  • 剑指offer|51-60题解题思路及代码(Java版)

    剑指offer51到60题总览: 构建乘积数组 正则表达式匹配 表示数值的字符串 字符流中第一个不重复的字符 链表...

  • 字符串

    剑指offer所有的题目总结 牛客 正则表达式的匹配 leetcode的题目,解析描述更加全面 https://l...

  • 剑指offer第二版-19.正则表达式匹配

    本系列导航:剑指offer(第二版)java实现导航帖 面试题19:正则表达式匹配 题目要求:实现正则表达式中.和...

  • 剑指 Offer 第19题:正则表达式匹配

    1、前言 2、思路 这道题的思路就是使用 dfs,首先匹配第一个字符串,包括 "." 的情况。 然后看后面的字符串...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • [剑指offer] 正则表达式匹配

    本文首发于我的个人博客:尾尾部落 题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'....

  • 【剑指19】正则表达式匹配

    题目描述: 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前...

  • 剑指offer | 正则表达式匹配

    正则表达式匹配 请实现一个函数来匹配包含"."和"*"的正则表达式。模式中的字符"."表示任意一个字符,而"*"表...

网友评论

      本文标题:剑指offer19题:正则表达式匹配

      本文链接:https://www.haomeiwen.com/subject/sunllqtx.html