劍指offer---正則表達式匹配
阿新 • • 發佈:2017-08-05
表達式 都是 igui true log pub 問題 code urn
//遞歸做的 開始用動態規劃做 類似通配符問題 總感覺有問題 答案裏面用dp做的多多少少有點問題 //估計是我水平太低 //只是其中一個帶符號! class Solution { public: bool match(char* str, char* pattern) { if(str==NULL||pattern==NULL) { return false; } return digui(str,pattern); } bool digui(char* str,char* pattern) {//出口條件 if(*str==‘\0‘&&*pattern==‘\0‘) return true; //因為‘.‘和‘*‘都是在pattern中 所以以下這種情況必然為FALSE if(*str!=‘\0‘&&*pattern==‘\0‘) return false; //如果有星號 看星號前面這個元素是否相等 if(*(pattern+1)==‘*‘) { if((*pattern==*str)||(*pattern==‘.‘&&*str!=‘\0‘)) { //星號前面的相等了 return (digui(str,pattern+2)||digui(str+1,pattern)); //為什麽不是digui(str+1,pattern+1) //因為字母加星號是有可能對應str中連續多個元素的 } else { //不一樣就很簡單了 returndigui(str,pattern+2); } } if(*str==*pattern||(*pattern=‘.‘&&*str!=‘\0‘)) { return digui(str+1,pattern+1); } return false; } };
劍指offer---正則表達式匹配