思路
分為兩種情況,第一種是接下來要匹配的第二個字元是'*',第二種是其他所有情況。
當第二個字元是' * '時,當成功匹配時有三種決策。分別是匹配零次、匹配一次、匹配多次。否則是按匹配零次處理。
其他情況,當匹配成功時(字元相等或模式串是' . ')繼續匹配下乙個,否則匹配失敗。
限制條件有:
任意兩個串為空時返回false
兩串都匹配到最大長度時匹配成功
模式串先匹配完則匹配失敗,目標串先匹配完不確定是否匹配成功(因為存在' * '的影響)
注意陣列越界的處理,不能簡單的在開頭就判斷是否越界,因為存在不是空串但串長度為0的字串
//參考**
public class solution
public boolean matches(char str, int i, char pattern, int j)else
}//緊接的字元不含'*'修飾的其他匹配串
if(i < str.length && (str[i] == pattern[j] || pattern[j] == '.'))
return matches(str, i+1, pattern, j+1);
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...