zoukankan      html  css  js  c++  java
  • 正则表达式匹配

    剑指offe第19题,很经典。

    如果不用递归的思维做,会很麻烦。

    因为对于.*、*.、*..等一些特殊情况处理会非常麻烦。

    所以采用递归的思路。(如果加上的动态规划思想,记录dp[m][n]表示str + m与pattern + n是否能正确匹配。就可以把复杂度控制在O(n*n)。

    class Solution {
    public:
        bool match(char* str, char* pattern)
        {
            if (str == nullptr || pattern == nullptr) {
                return false;
            }
            
            if (*str == '' && *pattern == '') {
                return true;
            }
            
               if (*pattern == '') {
                return false;
            }
            
            if ( *(pattern + 1) == '*') {
                 if (*pattern == *str || (*pattern == '.' && *str != '')) {
                    return match(str + 1, pattern) || 
                           match(str, pattern + 2) || 
                           match(str + 1, pattern + 2);
                } else {
                    return match(str, pattern + 2);
                }
            }
            
            if (*pattern == *str || (*pattern == '.' && (*str) != '')) {
                return match(str + 1, pattern + 1);
            }
            
            return false;
        }
    };
  • 相关阅读:
    第三讲:增长全局观
    搭建安卓环境
    ~~
    天气阴
    天气晴
    Spark性能优化指南——高级篇
    Ceph Jewel 10.2.3 环境部署
    《你只是看起来很努力》--读书笔记
    博客园基础环境配置
    Spark 1.3.0 单机安装
  • 原文地址:https://www.cnblogs.com/chenhuan001/p/7395665.html
Copyright © 2011-2022 走看看