博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode:正则表达式.
阅读量:3622 次
发布时间:2019-05-21

本文共 878 字,大约阅读时间需要 2 分钟。

这题比较难,需要采取递归下降的方式来解析数据,并处理边界问题。

class Solution(object):    def isMatch(self, s, p):        print(s,p,'...')        i,n = 0,len(p)        if s=='':return p=='' or (len(p)>=2 and p[1]=='*' and self.isMatch('',p[2:]))        if p=='':return False        if len(p)==1:return (s[0]==p[0] or p[0]=='.') and self.isMatch(s[1:],p[1:])        if s[-1]!=p[-1] and p[-1]!='.' and p[-1]!='*' :return False        ch = p[0]        if ch=='.':            if p[1]=='*':                j,n_s = 0,len(s)                while j
0 and s[j-1]!=ch):break; print(j,s,p,ch,s[j-1],n_s) res = self.isMatch(s[j:],p[2:]) if res==False:pass else:return True j+=1 return False else: return ch==s[0] and self.isMatch(s[1:],p[1:])print(Solution().isMatch("ab","a*"))

转载地址:http://jmrkn.baihongyu.com/

你可能感兴趣的文章
复制带随机指针的链表
查看>>
【SpringMVC】十、SSM整合入门
查看>>
学习Java Socket网络编程(三)
查看>>
Java方法参数之参数传递方式
查看>>
mysql安装和配置ODBC驱动,然后tableau链接MySQL数据库
查看>>
物联网之智能灯开发-前言
查看>>
物联网之智能灯-Django(一)
查看>>
使用计算机视觉技术进行工业品质检测
查看>>
Java重要知识点——方法的定义
查看>>
LinkedHashSet的使用
查看>>
JS 整数与罗马数字相互转换(1~3999)
查看>>
JUC - 阻塞队列:
查看>>
JUC - 线程池:
查看>>
JUC - Java8流式编程
查看>>
MySQL - 高级部分:
查看>>
JavaWeb框架 - Spring注解部分:
查看>>
SpringBoot使用外部的Tomcat: bean with name 'defaultValidator' defined in class path resource
查看>>
SpringBoot上传文件413问题:
查看>>
Java多线程 - AQS简单实现:
查看>>
建造者模式:
查看>>