Golang | Leetcode Golang题解之第10题正则表达式匹配

题目:

题解:

Go 复制代码
func isMatch(s string, p string) bool {
    m, n := len(s), len(p)
    matches := func(i, j int) bool {
        if i == 0 {
            return false
        }
        if p[j-1] == '.' {
            return true
        }
        return s[i-1] == p[j-1]
    }

    f := make([][]bool, m + 1)
    for i := 0; i < len(f); i++ {
        f[i] = make([]bool, n + 1)
    }
    f[0][0] = true
    for i := 0; i <= m; i++ {
        for j := 1; j <= n; j++ {
            if p[j-1] == '*' {
                f[i][j] = f[i][j] || f[i][j-2]
                if matches(i, j - 1) {
                    f[i][j] = f[i][j] || f[i-1][j]
                }
            } else if matches(i, j) {
                f[i][j] = f[i][j] || f[i-1][j-1]
            }
        }
    }
    return f[m][n]
}
相关推荐
lead520lyq4 小时前
Golang本地内存缓存
开发语言·缓存·golang
小邓吖6 小时前
自己做了一个工具网站
前端·分布式·后端·中间件·架构·golang
圣保罗的大教堂7 小时前
leetcode 3650. 边反转的最小路径总成本 中等
leetcode
木井巳9 小时前
【递归算法】验证二叉搜索树
java·算法·leetcode·深度优先·剪枝
We་ct10 小时前
LeetCode 30. 串联所有单词的子串:从暴力到高效,滑动窗口优化详解
前端·算法·leetcode·typescript
历程里程碑10 小时前
子串----和为K的子数组
大数据·python·算法·leetcode·elasticsearch·搜索引擎·哈希算法
YuTaoShao10 小时前
【LeetCode 每日一题】2976. 转换字符串的最小成本 I
算法·leetcode·职场和发展
我是咸鱼不闲呀13 小时前
力扣Hot100系列16(Java)——[堆]总结()
java·算法·leetcode
金庆13 小时前
Commit Hash from debug.ReadBuildInfo()
golang
YuTaoShao14 小时前
【LeetCode 每日一题】2977. 转换字符串的最小成本 II——(解法一)记忆化搜索
算法·leetcode·职场和发展