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