演算法題型 模式匹配

2021-09-26 06:37:11 字數 1925 閱讀 5924

1./**

* 題目描述* 請實現乙個函式用來匹配包括'.'和'*'的正規表示式。模式中的字元'.'表示任意乙個字元,

* 而'*'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。

* 例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是與"aa.a"和"ab*a"均不匹配

*/

2.分析:分類討論

遞迴終止條件:

//遞迴終止條件一:strindex和patternindex同時等於各自陣列長度

//遞迴終止條件二:模式下標patternindex先到達終點,表示匹配不成功

遞迴情況分類:

//情況1:pattern[patternindex+1]=='*',此時分為兩種情況:

// 1.1 pattern[patternindex]==str[strindex]||pattern[patternindex]=='.' ,分三種情況,見下文

// 1.1.1 abc a*bc ,模式匹配乙個字元

// 1.1.2 aaabc  a*bc ,模式匹配多個字元

// 1.1.3 abc  a*abc , 模式不匹配字元

// 1.2 pattern[patternindex]!=str[strindex],patternindex + = 2 ,直接跳過當前字元,進行下一輪匹配

//情況2:pattern[patternindex+1]!='*',但是 pattern[patternindex]==str[strindex]||pattern[patternindex]=='.'

//此時,patternindex 和 strindex 都+1

public class solution 

private boolean ismmatch(int strindex,charstr,int patternindex ,charpattern)

//遞迴終止條件二:模式下標patternindex先到達終點,表示匹配不成功

if (patternindex==pattern.length)

// 特別注意,永遠要判斷下標,以防越界!!!

//情況1:pattern[patternindex+1]=='*',此時分為兩種情況:

// 1.1 pattern[patternindex]==str[strindex]||pattern[patternindex]=='.' ,分三種情況,見下文

// 1.2 pattern[patternindex]!=str[strindex],patternindex + = 2 ,直接跳過當前字元,進行下一輪匹配

if (patternindex+1// 1.2 aabc b*aabc

else if (patternindex}

//情況2:pattern[patternindex+1]!='*',但是 pattern[patternindex]==str[strindex]||pattern[patternindex]=='.'

//此時,patternindex 和 strindex 都+1

if ((strindex return false;

}// public static void main(string args) ;

// charb=;

// sword52_modal_match s52 =new sword52_modal_match();

// boolean ismatch = s52.match(a,b);

// system.out.println(ismatch);

// }

}

模式匹配演算法

brute force演算法 kmp演算法 kmp演算法的改進 模式匹配 子串的定位操作被叫做串的模式匹配。串相等 串長度相等且各個對應位置的字元都相等。當兩個串不相等時,判斷兩個串大小的方法 給定兩個串 s1 a1a2a3a4 an 和s2 b1b2b3b4 bm 當滿足以下條件之一時,s1n存在...

演算法 模式匹配

你有兩個字串,即pattern和value。pattern字串由字母 a 和 b 組成,用於描述字串中的模式。例如,字串 catcatgocatgo 匹配模式 aabab 其中 cat 是 a go 是 b 該字串也匹配像 a ab 和 b 這樣的模式。但需注意 a 和 b 不能同時表示相同的字串。...

KMP模式匹配演算法以及普通模式匹配演算法

if return value 1 the indexsubstr is not exist else the indexsubstr is exist.int indexsubstr char substr,char str,int pos 0 printf lensubstr d n lensu...