劍指offer:面試題53——正規表示式匹配
題目:請實現乙個函式用來匹配包括』.『和』『的正規表示式。模式中的字元』.『表示任意乙個字元,而』'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配,但是與"aa.a"和"ab*a"均不匹配
思路:匹配函式可以遞迴重複呼叫,因此可以避免了雙層迴圈。
這裡有幾種情況,
當串中當前字元的下一位是』*『,
如果串當前位和模式串中當前位(星號前的一位)相同,
或者模式串當前位為".",下一位為星號,那麼當前可以略過一位匹配串中的當前位,模式串中的星號可以被略過也可以不被略過,也可以不略過匹配串的當前位,略過模式串中的星號,然後對串進行繼續的匹配。
如果下一位是星號,但當前匹配串和模式串字元不同,則直接略過星號
class solution if(
*str==
*pattern||
(*pattern==
'.'&&
*str!=
'\0'))
return
matchcore
(str+
1,pattern+1)
;return false;
}public:
bool match
(char
* str,
char
* pattern)
;int m_status=g_valid;
if(str==
null
||pattern==
null
)return
matchcore
(str,pattern);}
};
劍指offer 面試題53 正規表示式匹配
題目 請實現乙個函式用來匹配包含 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 匹配,但與 aa.a 及 ab a 均不匹配。思路 我們從頭遍歷字串與模式,如果第乙個字串...
劍指Offer 面試題53 正規表示式匹配
題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 思路 在比較匹配字串...
劍指offer面試題7
面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...