首页 > 其他分享 >LeetCode正则表达式匹配(lambda/dp)

LeetCode正则表达式匹配(lambda/dp)

时间:2023-01-25 22:44:07浏览次数:61  
标签:return int 列表 false LeetCode dp lambda

lambda表达式
[捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 }
所谓捕获列表,其实可以理解为参数的一种类型,lambda 表达式内部函数体在默认情况下是不能够使用函数体外部的变量的,这时候捕获列表可以起到传递外部数据的作用。
[&] Capture any referenced variable by reference


原题解

题目

约束

解法

dp五部曲:
1.状态定义
2.状态转移
3.初始化
4.遍历顺序
5.返回形式

class Solution {
public:
    bool isMatch(string s, string p) {
        int m = s.size();
        int n = p.size();

        auto matches = [&](int i, int j) {//判断两个字符是否匹配
            if (i == 0) {//因为要在这里找到真正的下标,所以i==0时没法-1直接返回
                return false;
            }
            if (p[j - 1] == '.') {
                return true;
            }
            return s[i - 1] == p[j - 1];//下标-1在这里实现的
        };

        vector<vector<int>> f(m + 1, vector<int>(n + 1));//天然为false
        f[0][0] = true;//f[0][1~n-1]都为false
        for (int i = 0; i <= m; ++i) {//这里的ij代表字符串长度,真正的下标要-1
            for (int j = 1; j <= n; ++j) {
                if (p[j - 1] == '*') {
                    f[i][j] |= f[i][j - 2];
                    if (matches(i, j - 1)) {
                        f[i][j] |= f[i - 1][j];
                    }
                }
                else {
                    if (matches(i, j)) {
                        f[i][j] |= f[i - 1][j - 1];
                    }
                }
            }
        }
        return f[m][n];
    }
};

标签:return,int,列表,false,LeetCode,dp,lambda
From: https://www.cnblogs.com/chuixulvcao/p/17067387.html

相关文章

  • LeetCode-343. 整数拆分 - 题解分析
    题目来源343.整数拆分题目详情给定一个正整数 n ,将其拆分为k个正整数的和( k>=2 ),并使这些整数的乘积最大化。返回你可以获得的最大乘积 。示例1:输入:......
  • Lambda 表达式
    Lambda表达式是一个Java8以后开始支持的一个非常优雅的新特性,本小节我们将学习什么是Lambda表达式,为什么需要Lambda表达式,Lambda表达式的基础语法,以及Lambda表达......
  • 代码随想录算法训练营day11 | leetcode 20. 有效的括号 1047. 删除字符串中的所有相邻
    基础知识StringStringBuilder操作publicclassStringOperation{intstartIndex;intendIndex;{//初始容量为16个字符主要做增删查......
  • 【栈】LeetCode 772. 基本计算器 III
    题目链接772.基本计算器III思路与【栈】LeetCode227.基本计算器II完全相同代码classSolution{publicintcalculate(Strings){//定义运算符......
  • [LeetCode] 1101. The Earliest Moment When Everyone Become Friends
    Therearenpeopleinasocialgrouplabeledfrom 0 to n-1.Youaregivenanarray logs where logs[i]=[timestampi,xi,yi] indicatesthat xi and ......
  • UDP
    1.OSError:[WinError10040]一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小。接收给的内存小了当客......
  • RSA dp泄漏攻击
    dp泄漏攻击给n,e,dp,c\[\begin{array}{l}&&&&&&&&&&&&&\\dp\equivd(\bmod(p-1))\\\becausedp\cdote\equivd\cdote\equiv1(\bmod(p-1))\\\th......
  • 【LeetCode哈希表#2】两个数组的交集(Set+数组)
    两个数组的交集力扣题目链接(opensnewwindow)题意:给定两个数组,编写一个函数来计算它们的交集。说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的......
  • LeetCode-670. 最大交换-题解分析
    题目来源670.最大交换题目详情给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例1:输入:2736输出:7236解释:交换数字2和数字......
  • P2657 [SCOI2009] windy 数 数位DP好题
    P2657[SCOI2009]windy数-洛谷|计算机科学教育新生态(luogu.com.cn)数位DP好题主要问题是:不含前导零且相邻两个数字之差至少为 2solution:现在枚举到了第i位......