20230126 磕磕绊绊默写完
20230127 顺利写完
20230129 有点小磕但是顺利写完
20230201 顺利写完
20230209 顺利写完
20230224 顺利写完
20230506 全部忘掉
20230508 顺利通过
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在这里实现的
};
//状态转移方程为s第i位之前与p第j位之前匹不匹配
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] == '*') {//s p 都要-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];
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)