LeetCode Task18. 正则表达式匹配

题目

10. 正则表达式匹配
在这里插入图片描述
在这里插入图片描述

解答

代码

class Solution(object):
    def isMatch(self, s, p):
        """
        :type s: str
        :type p: str
        :rtype: bool
        """
        i=0
        while i<len(p):
            if i<len(s):
                if p[i]!=s[i]:
                    if p[i]=='*':
                        n=0
                        for j in s[i:]:
                            if j!=s[i-1]:
                                break
                            else:
                                n+=1
                        pist=list(p)
                        pist.insert(i,s[i-1]*n)
                        del pist[i+1]
                        p= "".join(pist)
                        i+=n
                    elif p[i]=='.':
                        if i+1<len(p):
                            if p[i+1]!='*':
                                pist=list(p)
                                pist.insert(i,s[i])
                                del pist[i+1]
                                p= "".join(pist)
                                i+=1
                            else:
                                if i+2<len(p):
                                    p=p[i+2:]
                                    s=s[len(s)-len(p):]
                                    i=-1
                                else:
                                    return True
                        else:
                            return True
                    else:
                        if i+1<len(p):
                            if p[i+1]=='*':
                                pist=list(p)
                                del pist[i]
                                del pist[i]
                                p= "".join(pist)
                                i=i-1
                            else:
                                return False
                        else:
                            return False
                i+=1
            else:
                return False
        if len(p)<len(s):
            return False
        else:
            return True   

结果

没有弄出来,目前的代码还有个别情况考虑不进去,因为自己一开始的想法就已经偏了,后面才知道应该从字符串的末尾开始考虑会更好。这个代码,是从第一个位置开始考虑,所以if-else语句特别多,讨论了非常多种情况,但是写了很久改了很久还是没有全部包含进去。个人是想之后再练习这一题,今天的算法练习已经花了近三个小时,远远超过原计划,为了不影响别的学习任务,就先做到这一步,日后再修改完善。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值