1. 程式人生 > >演算法分析課每週練習 Regular Expression Matching

演算法分析課每週練習 Regular Expression Matching

題目

Implement regular expression matching with support for '.' and '*'

分析

參看前面的萬用字元匹配

class Solution:
    # @return a boolean
    def isMatch(self, s, p):
        if len(p)==0: return len(s)==0
        if len(p)==1 or p[1]!='*':
            if len(s)==0 or (s[0]!=p[0] and p[0]!='.'):
                return False
            return self.isMatch(s[1:],p[1:])
        else:
            i=-1; length=len(s)
            while i<length and (i<0 or p[0]=='.' or p[0]==s[i]):
                if self.isMatch(s[i+1:],p[2:]): return True
                i+=1
            return False