題目描述
請實現乙個函式用來匹配包括』.』和』『的正規表示式。模式中的字元』.』表示任意乙個字元,而』『表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串」aaa」與模式」a.a」和」ab*ac*a」匹配,但是與」aa.a」和」ab*a」均不匹配
昨天晚上提交不通過,今天提交就能通過,也是服了。
題目明顯可以實用遞迴進行求解,注意一下幾種情況,
1、pattern中出現連續兩個『*』或者開頭就是」*」的直接返回false,因為這不是正確的正規表示式。
2、如果pattern到達末尾,那麼str必須到達末尾,否則直接返回不匹配
3、如果pattern沒有達到末尾,但是str到達末尾,則需要單獨判斷之後的pattern是否是連續出現兩個非「*」如果是返回false,直到遍歷到pattern末尾返回true
4、對於其他情況,如果對應的pattern第二個字元不是「*」,那麼直接比對當前字元,不匹配直接返回false,匹配的話pattern和str都向前加1;
5、如果對應的pattern第二個字元是『*』那麼分為以下幾種情況
如果當前字元是不匹配的:
如果當前字元是匹配的:
class solution
return recurmatch(str,pattern);
}bool recurmatch(char* str, char* pattern)
if(*pattern==*str||*pattern=='.')
return recurmatch(str+1, pattern)||recurmatch(str, pattern+2)||recurmatch(str+1, pattern+2);
return recurmatch(str, pattern+2);
}bool judgepatt(char *patt)
return
true;
}};
正規表示式 匹配
字串 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...