請實現乙個函式用來匹配包括』.『和』*『的正規表示式。模式中的字元』.'表示任意乙個字元,而 * 表示它前面的字元可以出現任意次(包含0次)。
在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是"aa.a"和"ab*a"均不匹配
第一步:使用2個指標i,j對應目標陣列和匹配陣列,2個字元陣列分別往後遍歷。
如果2個指標同時到達length,則說明匹配成功,返回true
如果只有匹配的陣列的j到達,則說明匹配陣列並不能匹配目標陣列,返回false
如果目標陣列的i到達length,匹配陣列仍未到達,若要匹配成功,則必須能匹配空陣列,則說明剩下的字元必為偶數個,而且都是某個字元和*的組合,如果不是,返回false,是則為true
第二步:對字元進行匹配
如果pattern[j+1] == 『*』,如果pattern[j]與str[i]不相等的話,則pattern[i]、pattern[j+1]只能當做0個字元處理;如果相等,則說明pattern[i]、pattern[j+1]能匹配str[i]或者不匹配i。
如果pattern[j+1] != 『*』,直接進行判斷,如果相等,則i、j往後移一位;如果不相等,直接返回false;
public class solution
public boolean helper(char str, char pattern, int i, int j)
//匹配陣列提前結束,則不匹配
if (j == pattern.length) return false;
if (i == str.length && j < pattern.length)
return true;
}//處理pattern[j+1]為*的情況
劍指offer 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但是與 aa.a 和 aba 均不匹配 由於只涉及兩種正規表示式的匹配,...
劍指Offer 正規表示式匹配
題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 實現 class s...
劍指offer 正規表示式匹配
題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配.分析 觀察模式串中第...