154 正規表示式匹配

2021-10-11 07:24:15 字數 1992 閱讀 8322

154. 正規表示式匹配

實現支援'.'和'*'的正規表示式匹配。

'.'匹配任意乙個字母。

'*'匹配零個或者多個前面的元素。

匹配應該覆蓋整個輸入字串,而不僅僅是一部分。

需要實現的函式是:bool ismatch(string s, string p)

ismatch("aa","a") → false

ismatch("aa","aa") → true

ismatch("aaa","aa") → false

ismatch("aa", "a*") → true

ismatch("aa", ".*") → true

ismatch("ab", ".*") → true

ismatch("aab", "c*a*b") → true

樣例樣例 1:

輸入:"aa","a"

輸出:false

解釋:無法匹配

樣例 2:

輸入:"aa","a*"

輸出:true

解釋:'*' 可以重複 a

bool ismatch(string &s, string &p)

else if (j+2 < dstlen && p[j] == '.' && p[j + 1] == '*'  && srclen == 2 && dstlen > 2 &&  p[j + 2] != '*')

else if (p[j] == '.' && p[j + 1] == '*')

i++;

j = j + 2;

}else if(s[i] != s[i + 1] && s[i] != p[j+2])

else

}else if (p[j] == '.')

else if (s[i] != p[j] && j+1 < dstlen &&  p[j + 1] == '*')

else if (j == dstlen - 1 && i != srclen - 1 && p[j ] != '*')

else if (j != dstlen - 1 && i == srclen - 1)

if (p[j] == s[i])}}

else if (s[i] == p[j])

else if (j == dstlen - 1 && i == srclen - 1 && s[i] != p[j] && p[j] != '*' && p[j] != '.')

else if (i == srclen)}}

}else if (p[j] == '*')

i++;

j++;

}else if (j + 1 < dstlen) //把 * 前面當作 0 個

else if (p[j + 1] != s[i - 1])

else

}else

}if (j < dstlen - 1)

return true;

}void test(){/*

string s = "aaaab";

string p="a*a*a*a*c";*/

//string s = "aa";

//string p = "a*";

//string s = "bbabacccbcbbcaaab";

//string p = "a*b*a*a*c*aa*c*bc*";

/*string s = "ab";

string p = ".*c";

*///string s = "bbbba";

//string p = ".*a*a";

//string s = "acaabbaccbbacaabbbb";

//string p = "a*.*b*.*a*aa*a*";

string s = "aasdfasdfasdfasdfas";

string p = "aasdf.*asdf.*asdf.*asdf.*s";

bool ret =  ismatch(s, p);

正規表示式 匹配

字串 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...