劍指Offer 面試題53 正規表示式匹配

2021-08-20 05:23:39 字數 1193 閱讀 4203

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

思路:在比較匹配字串和模式字串的時候,判斷某個字串時,

1、如果字串的字元不為」\0」(最後乙個字元),而模式串的字元為」\0」,這時是不匹配

2、如果字串的字元為」\0」,模式串的字元也為」\0」,這時是匹配

3、如果字串的字元為」\0」,而模式串的字元不為」\0」,這時是無法判斷的,為什麼呢?比如字串為」「,而模式串為」.「,因為 *可以表示為0次,

4、如果模式字串是』.』,那麼只需要字串和模式串同時後移一位即可

5、如果模式字串是』*』,那麼有3種小情況:

1)字串往後移一位,模式串不動 (任意次)

2)字串往後移一位,模式串往後移兩位 (1次)

3)字串不動,模式串往後移兩位 (0次)

/*

題目:正規表示式匹配

思路:在比較匹配字串和模式字串的時候,判斷某個字串時,

1、如果模式字串是'.',那麼只需要字串和模式串同時後移一位即可

2、如果模式字串是'*',那麼有3種小情況,1)字串往後移一位,模式串不動 (任意次)

2)字串往後移一位,模式串往後移兩位 (1次)

3)字串不動,模式串往後移兩位 (0次)

*/class solution

if(*str != '\0' && *pattern == '\0')

if(*(pattern+1) == '*')

else

}if( (*pattern == '.' || *str == *pattern) && *str != '\0' )

return

false;

}};

劍指offer 面試題53 正規表示式匹配

題目 請實現乙個函式用來匹配包含 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 匹配,但與 aa.a 及 ab a 均不匹配。思路 我們從頭遍歷字串與模式,如果第乙個字串...

劍指offer 面試題53 正規表示式匹配

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

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...