題目描述
請實現乙個函式用來匹配包括』.』和』*』的正規表示式。模式中的字元』.』表示任意乙個字元,而』*』表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串」aaa」與模式」a.a」和」ab*ac*a」匹配,但是與」aa.a」和」ab*a」均不匹配演算法解析:
同時遍歷兩個字串,當匹配模式串中的當前值不是』*『,下乙個值為』*『的時候,而』*』表示它前面的字元可以出現任意次(包含0次),所以遇到這種情況的時候,這個模式字元可能出現0次,1次,或者多次,所以剩下字串和模式串的匹配結果由這三種的結果共同影響。
**如下:
public
boolean
match(char str, char pattern)
return matchcore(str, pattern, 0, 0);
}private
boolean
matchcore(char str, char pattern, int i, int j)
if (i == str.length && j != pattern.length)
j++;
}return
true;
}if (i != str.length && j == pattern.length)
if (j == pattern.length - 1)
return
false;
}if (pattern[j + 1] == '*')else
}if (str[i] == pattern[j] || (pattern[j] == '.' &&
i != str.length))
return
false;
}
正規表示式 匹配
字串 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...