字串——正規表示式匹配

鄧肯145發表於2018-05-09

請實現一個函式用來匹配包括”.”和”*”的正規表示式。 
模式中的字元”.”表示任意一個字元,而”*”表示它前面的字元可以出現任意次(包含0次)。 
在本題中,匹配是指字串的所有字元匹配整個模式。 
例如,字串”aaa”與模式”a.a”和”ab*b*ac*a”匹配,但是與”aa.a”和”ab*a”均不匹配

當模式中的下一個字元不是”*”時:

如果字串當前字元和模式中的當前字元相匹配,那麼字串指標和模式指標都後移一個字元,然後匹配剩餘的。

如果字串當前字元和模式中當前字元不匹配,直接返回false。

當模式中的下一個是”*”時:

如果字串當前字元跟模式當前字元不匹配,則模式指標後移2個字元,繼續匹配。

如果字串當前字元跟模式當前字元匹配,可以有3種匹配方式:

1、模式指標後移2字元,相當於x*被忽略; 
2、字串指標後移1字元,模式指標後移2字元; 
3、字串指標後移1字元,模式不變,即繼續匹配字元下一位,因為*可以匹配多位;


相關文章