首页 > 其他 > 详细

10.正则表达式匹配

时间:2020-06-06 09:21:42      阅读:41      评论:0      收藏:0      [点我收藏+]
‘‘‘

思路:
    生成二维数组,动态规划
‘‘‘

class Solution(object):
    def isMatch(self, s, p):
        slen = len(s)
        plen = len(p)
        arr = [([False]*(slen+1))for _ in range(plen+1)]
        arr[0][0] = True
        for i in range(1,plen+1):
            if i >= 2 and p[i-1] == * and arr[i-2][0]:
                arr[i][0] = True
        for i in range(1,plen+1):
            for j in range(1,slen+1):
                if p[i-1] == *:
                    if p[i-2] == .:
                        if arr[i-1][j-1] or arr[i][j-1] or arr[i-1][j]:
                            arr[i][j] = True
                        if i >= 2 and arr[i-2][j]:
                            arr[i][j] = True
                    else:
                        if p[i-2] == s[j-1] and (arr[i-1][j] or arr[i][j-1] or arr[i-2][j]):
                            arr[i][j] = True
                        if i>=2 and p[i-2] != s[j-1] and arr[i-2][j]:
                            arr[i][j] = True
                else:
                    if (p[i-1] == s[j-1] or p[i-1] == .) and arr[i-1][j-1]:
                        arr[i][j] = True
        return arr[plen][slen]

技术分享图片

本题是动态规划第一题,通过画出二维数组解决问题。

10.正则表达式匹配

原文:https://www.cnblogs.com/xxxxxiaochuan/p/13053204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!