正则表达式匹配

请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配

public class Solution {
    public boolean match(char[] str, char[] pattern) {
        if (str == null || pattern == null) {
            return false;
        }
        int m = 0, n = 0;
        return matchStr(str, pattern, m, n);
    }

    private boolean matchStr(char[] str, char[] pattern, int m, int n) {
        // 有效性检验:str到尾,pattern到尾,匹配成功
        if (m == str.length && n == pattern.length) {
            return true;
        }
        // pattern 先到尾巴,匹配失败
        if (m != str.length && n == pattern.length)
            return false;
        // 模式第2个不是*,且字符串第1个跟模式第1个匹配,则都后移1位,否则直接返回false
        if ((m != str.length && pattern[n] == str[m])
                || (pattern[n] == '.' && m != str.length)) {
            if ((n + 1 < pattern.length && pattern[n + 1] != '*')
                    || n + 1 >= pattern.length) {
                return matchStr(str, pattern, m + 1, n + 1);
            }

        }

            if (m < str.length  && str[m] == pattern[n]|| (pattern[n] == '.' && m != str.length)
                    ) {
                return matchStr(str, pattern, m, n + 2)
                        || matchStr(str, pattern, m + 1, n + 2)
                        || matchStr(str, pattern, m + 1, n);
            }else{
                return matchStr(str, pattern, m, n + 2);
            }
        }
        return false;
    }
}

这个题目可以参考牛客网上的剑指offer

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • - 正则表达式:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。在开发的使用场景...
    小蠢驴打代码阅读 2,520评论 0 8
  • 题目描述请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的...
    NoFacePeace阅读 359评论 0 0
  • 匹配基础 对于正则表达式,有两条普适原则: 优先选择最左端的匹配结果; 标准的匹配量词(*、+、?和{min, m...
    戴小白阅读 4,199评论 1 6
  • 本系列导航:剑指offer(第二版)java实现导航帖 面试题19:正则表达式匹配 题目要求:实现正则表达式中.和...
    ryderchan阅读 2,372评论 3 2
  • 最近工作状态一改以前的事不关己高高挂起,因为意识到团队工作仅仅做好自己是不够的。闭塞自己有时候会让自己与外界脱轨。...
    七月上的冥王星阅读 237评论 0 0