正規表示式的判斷

2021-07-11 10:01:46 字數 1068 閱讀 5540

給定乙個字串,判斷其是否為合法的正規表示式。

乙個正規表示式定義為:

1:0是正規表示式,1也是正規表示式。

2:p和q都是正規表示式,則pq是正規表示式。

3:p是正規表示式,則(p)是正規表示式

4:p是正規表示式,則p*也是正規表示式

5:p和q都是正規表示式,則p|q是正規表示式。

輸入 輸入包含多組資料。

每組資料為一行乙個字串,長度不超過100。

輸出 對於每組資料,如果輸入是合法的正規表示式,輸出yes,否則輸出no。

樣例輸入

010101101*

(11|0*)*

)*111

樣例輸出

yes

yes

no設dp[i][j]為將區間i到j是否合法,顯然若區間i到j合法則有dp[i][j]為true,初始狀態若s[i]為』0』或』1』,則dp[i][i]為true,否則為false,然後列舉長度進行區間dp,對於五個定義,定義1用來做上述初始化,定義2和5是一類,需要列舉分割點,若區間內不存在』|』,則用定義2,否則用定義5;定義3和4是一類,直接判斷即可,定義3若括號內的是合法的則加上括號也合法,定義4若dp[i][j - 1]合法,加乙個』*』也合法,最後判斷dp[0][len - 1]是否為true

public

class uku1

}//區間的長度

for(int size = 1; size < len; size++)

if(s.charat(j) == '*' && dp[i][j-1])

if(dp[i][j])

continue;

for(int k = i; k < j; k++) }}

for(int i = 0; i < len; i++)

system.out.println();

}return dp[0][len-1];

}public

static

void

main(string args)

}

正規表示式判斷

public class test 校驗輸入的qq號碼是否符合規則 param qq return public static boolean checkqq1 string qq 如果qq號碼中有任何一位不是數字,就直接返回false for int i 0 i qq.length i 如果首位是...

javascript正規表示式判斷

整數格式 patternsdict.long 0 1 9 d 小數格式 patternsdict.double 0 1 9 d d 數值格式 patternsdict.number 0 1 9 d 0 1 9 d d 自然數 patternsdict.positive 1 9 d 負整數 patte...

JS正規表示式判斷

是否帶有小數 function isdecimal strvalue 校驗是否中文名稱組成 function ischina str 定義驗證表示式 return reg.test str 進行驗證 校驗是否全由8位數字組成 function isstudentno str 定義驗證表示式 retu...