zoukankan      html  css  js  c++  java
  • Regular Expression Matching

    bool isMatch(char* s, char* p) {

    if(s[0] == 0)
    {
    if(p[0] == 0)return true;
    if(p[0] != 0 && p[1] == '*')return isMatch(s,p+2);
    return false;
    }

    if(p[0] == 0)return false;

    if(p[1] == '*')
    {
    if(p[0] == s[0]||p[0] == '.')return (isMatch(s+1,p) || isMatch(s,p+2));
    else return isMatch(s,p+2);
    }

    if(p[0] == s[0] || p[0] =='.')
    {
    return isMatch(s+1,p+1);
    }

    return false;
    }


    bool isMatch(char* s, char* p) {
    int s_len = strlen(s);
    int p_len = strlen(p);
    bool **f = (bool**)malloc(sizeof(bool*)*(s_len+1));
    for (int i = 0; i <= s_len; ++i)
    f[i] = (bool*)malloc(sizeof(bool)*(p_len+1));
    f[0][0] = true;
    for (int i = 1; i <= s_len; ++i)
    f[i][0] = false;
    for (int i = 1; i <= p_len; ++i)
    f[0][i] = i > 1 && f[0][i-2] == true && p[i - 1] == '*';
    for (int i = 1; i <= s_len; ++i)
    for (int j = 1; j <= p_len; ++j)
    if (p[j-1] != '*')
    f[i][j] = f[i-1][j-1] == true && (s[i-1] == p[j-1] || p[j-1] == '.');
    else
    f[i][j] = f[i][j-2] == true || (s[i-1] == p[j-2] || p[j-2] == '.') && f[i-1][j] == true;
    bool result = f[s_len][p_len];
    for (int i = 0; i <= s_len; ++i)
    free(f[i]);
    free(f);
    return result;
    }

  • 相关阅读:
    JS知识点简单总结
    Js答辩总结
    JS答辩习题
    轮播
    jQuery选择器总结
    JS的魅力
    JS与JAVA数据类型的区别
    单表查询、多表查询、虚拟表连接查询
    Mysql基本语句
    Mysql数据库
  • 原文地址:https://www.cnblogs.com/clover-xuqi/p/8043902.html
Copyright © 2011-2022 走看看