劍指offer 正規表示式匹配

2021-09-26 22:30:10 字數 1162 閱讀 5039

請實現乙個函式用來匹配包括』.『和』*『的正規表示式。模式中的字元』.'表示任意乙個字元,而 * 表示它前面的字元可以出現任意次(包含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 均不匹配.分析 觀察模式串中第...