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;
        }
    };
  • 相关阅读:
    软件工程个人作业01
    动手动脑
    大道至简感想终结篇
    课后作业
    反思
    课后作业
    不忘初心,方得始终
    课后作业
    沟通,让一切变得简单

  • 原文地址:https://www.cnblogs.com/chenhuan001/p/7395665.html
Copyright © 2011-2022 走看看