#实现正则表达式匹配并支持'.'和'*'。
#''匹配任何单个字符。
#'*'匹配前面元素的零个或多个。
#匹配应覆盖整个输入字符串(非部分)。
##Some examples:
##isMatch("aa","a") → false
##isMatch("aa","aa") → true
##isMatch("aaa","aa") → false
##isMatch("aa", "a*") → true
##isMatch("aa", ".*") → true
##isMatch("ab", ".*") → true
##isMatch("aab", "c*a*b") → true

def ismatch(s,re):
    l=[]
    for k in range(len(re)):
        if re[k]=='*':
            l.append(k)
    re=''.join(re.split('*'))
    for i in range(len(l)):
        l[i]=l[i]-i-1
    print(re)
    print(l)
    flg=0
    for i in range(len(s)):
        ## *退出
        while flg  in l and s[i]!=re[flg] and re[flg]!='.':            
            flg+=1
        if flg==len(re):
            return False,'re too short'
        if flg  not in l:
            if s[i]==re[flg] or re[flg]=='.':
                flg+=1
            else:
                return False,'no *'
        if i==len(s)-1:
            if flg==len(re):
                return True,'perfect'
            else:
                return False,'re too long'

print(ismatch("aaaaab", "c*a*."))

最新文章

  1. Java实现线性阈值模型(Linear Threshold Model)
  2. Solr的原理及在项目中的使用实例.
  3. Vc6.0头文件的定义
  4. win7安装oracle11g64位提示环境变量Path长度超出
  5. spring中各jar功能及jar包之间的依赖关系
  6. 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置
  7. js节点属性
  8. window.open被浏览器拦截的解决方案
  9. 删除内容并不能删除field structure -- features_revert
  10. sql STUFF用法
  11. hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
  12. GDI+ 填充背景时,非常多时候不起作用,GDI、GDI+配合运用
  13. echarts饼图点击事件
  14. maven的下载安装,配置本地仓库
  15. 用C# 模拟实现unity里的协程
  16. idea git 使用
  17. CentOS 系列安装 Docker
  18. SQL基础日期函数
  19. HDU1258 Sum It Up(DFS) 2016-07-24 14:32 57人阅读 评论(0) 收藏
  20. EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)

热门文章

  1. POJ 2154 color (polya + 欧拉优化)
  2. Solr复杂条件查询
  3. P3371 【模板】单源最短路径(弱化版)(Dijkstra算法)
  4. sublime text 入门
  5. C++ 打印机设置
  6. undefined的几种情况
  7. kruscal重构树略解
  8. iOS开发 -------- 网络状态监测
  9. version control的简单认知
  10. pip使用豆瓣的镜像源