正規表示式匹配

2021-09-30 16:38:21 字數 763 閱讀 5591

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

思路:沒有硬懟邏輯,看來一下別人寫的遞迴寫法,理解了一下,大致是這麼乙個思路

如果str和pattern都為空了,說明匹配完成,返回true,,如果str不為空,pattern為空,說明匹配沒有完成,返回

false,這也是遞迴出口的判斷條件。

.好處理,因為只能匹配乙個字元,麻煩的是,因為能匹配0-多個字元,需要對其進行分類討論

如果下乙個字元不是*,很簡單,直接判斷當前字元是否相等(或者str不為空,pattern當前字元為.)遞迴進行下乙個字元的匹配,否則返回false;

如果下乙個字元時*,判斷當前字元是否相等(或者str不為空,pattern當前字元為.),如果不相等,說明*匹配0個,str不動,pattern後移2位,在遞迴進行判斷,如果相等,則存在匹配乙個或多個的情況,1個的話(最初我的理解是str+1,pattern+2)多個的話,str後移一位,pattern不動;後來看了別人的注釋發現,可以整合成看成一種情況,匹配成功乙個,str+1,pattern不變,這時如果變成匹配0個,就變成第一種情況,匹配多個的情況的相當於繼續從str+1往下匹配。

**如下

class solution 

else

}};

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...

正規表示式匹配

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